Springboot+MyBatis-Plus连接MySQL初体验

1、在pom.xml导入MyBatis相关的包

该项目使用的springboot版本是 3.5.13

复制代码
   <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version> 3.5.10.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-jsqlparser</artifactId>
            <version>3.5.10.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-3-starter</artifactId>
            <version>1.2.20</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

加入这段代码后点击maven的刷新按钮,重新拉取一下

Lifecycle中的install可以查看拉取过程

2、在application.yml配置数据库连接

复制代码
spring:
    application:
        name: weibo
    servlet:
        multipart:
            max-file-size: 50MB
            max-request-size: 100MB
    datasource:
        username: root
        password: xxx
        url: jdbc:mysql://localhost:3306/webo?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
server:
    port: 8080
    servlet:
        context-path: /

3、创建entity实体类去映射数据库的数据表

java 复制代码
package com.hn.it.weibo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("users")
public class User {

    @TableId(value="user_id",type= IdType.AUTO)
    private int id;
    @TableField("user_nickname") //一律小写,不能用驼峰法
    private String nickName;
    @TableField("user_loginname")
    private String loginName;
    @TableField("user_loginpwd")
    private String loginPwd;
    @TableField("user_photo")
    private String  photo;
    @TableField("user_score")
    private int score;
    @TableField("user_attioncount")
    private int attionCount;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getLoginPwd() {
        return loginPwd;
    }

    public void setLoginPwd(String loginPwd) {
        this.loginPwd = loginPwd;
    }

    public String getPhoto() {
        return photo;
    }

    public void setPhoto(String photo) {
        this.photo = photo;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public int getAttionCount() {
        return attionCount;
    }

    public void setAttionCount(int attionCount) {
        this.attionCount = attionCount;
    }


}

4、写操作数据库的接口Mapper(Dao)

5、Controller注入UserMapper,用**UserMapper**去执行数据库操作

UserController的代码如下:

java 复制代码
package com.hn.it.weibo.web;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hn.it.weibo.entity.User;
import com.hn.it.weibo.mapper.UserMapper;
import com.hn.it.weibo.web.dto.RespEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.hn.it.weibo.web.dto.UserDto;
import org.springframework.web.multipart.MultipartFile;


@RestController
//@Controller
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user/list")
    public RespEntity userList() {
        List<User> list = userMapper.selectList(new QueryWrapper<>());
        return new RespEntity(2000,"查询成功",list);
    }

    @PostMapping("/user/login")
    public RespEntity login(String name, String pwd) {
        QueryWrapper<User> qw= new QueryWrapper<>();
        qw.eq("user_loginname", name);
        qw.eq("user_loginpwd", pwd);
        User user = userMapper.selectOne(qw);
        if(user != null) {
            user.setLoginPwd(null);
            return new RespEntity(2000,"登录成功",user);
        }
        return new RespEntity(4001,"用户名或密码不符",null);
    }

    @PostMapping("/user/reg")
    public RespEntity register(@RequestBody User user) {
        QueryWrapper<User> qw = new QueryWrapper<>();
        qw.eq("user_loginname",user.getLoginName());
        User u = userMapper.selectOne(qw);
        if(u != null) {
            return new RespEntity(4000,"此用户名已存在,不允许注册",null);
        }

        user.setScore(50);
        user.setAttionCount(0);
        userMapper.insert(user);
        user.setLoginPwd("");

        return new RespEntity(2000,"注册成功",user);
    }



    @GetMapping("/my/test01")
    public RespEntity test01(@RequestParam(value="name",defaultValue = "姓名未知") String stuname,int age ) {
        System.out.println(stuname+age);
        return new RespEntity(2000,"插入成功",stuname+age);
    }

    @PostMapping("/my/test02")
    public RespEntity test02(@RequestBody Map<String,Object> map) {
        String nickName = map.get("nickName").toString();
        String loginName = map.get("loginName").toString();
        String loginPwd = map.get("loginPwd").toString();

        return new RespEntity(2000,"注册成功",nickName+loginName+loginPwd);
    }

    @PostMapping("my/test03")
    public RespEntity test03(@RequestBody UserDto user) {
        System.out.println(user);
        return new RespEntity(2000,"注册成功",user.getNickName()+user.getLoginName()+user.getLoginPwd());
    }

    @PostMapping("my/test04")
    public RespEntity test04( String title, String content, MultipartFile imgfile) throws IOException {
        System.out.println(title+content+imgfile.getOriginalFilename());
        if(!imgfile.isEmpty()) {
            imgfile.transferTo(new File("D:/"+imgfile.getOriginalFilename()));
        }
        return new RespEntity(2000,"插入成功",title+content+imgfile.getOriginalFilename());
    }

//    @RequestMapping(value="/my/hello",method = RequestMethod.GET)
    @GetMapping(value="/my/hello",produces = "application/json;charset=utf-8")
//    @ResponseBody//不加就是返回页面
    public String hello() {
        return """
                {
                "hello":"world",
                "name":"张三"
                }
                """;
    }

    @GetMapping(value="/my/hello2")
//    @ResponseBody//不加就是返回页面回
    public Map<String,Object> hello2(){
        Map<String,Object> map = new HashMap<>();
        map.put("code",2000);
        map.put("msg","查询成功");
        map.put("data",Map.of("name","张三","age",23));
        return map;

    }

    @GetMapping(value="/my/hello3")
    public RespEntity hello3(){

        return new RespEntity(2000,"查询成功",Map.of("name","张三","age",23));
    }

}
相关推荐
Flittly2 小时前
【SpringAIAlibaba新手村系列】(7)结构化输出与对象映射
java·spring boot·agent
Echo27172 小时前
mybatis的知识点总结
mybatis
WangJunXiang62 小时前
MySQL高可用详细解析
android·数据库·mysql
helx822 小时前
基于Spring Boot 3 + Spring Security6 + JWT + Redis实现登录、token身份认证
spring boot·redis·spring
蜡台3 小时前
macOS 无法启动 MySQL服务解决
数据库·mysql·macos
执笔论英雄3 小时前
vLLM V1 Scheduler的调度逻辑&优先级分析
数据库·mysql
桌面运维家3 小时前
MySQL安全实战:慢查询诊断与SQL注入防御
sql·mysql·安全
eEKI DAND3 小时前
Spring Boot 3.3.4 升级导致 Logback 之前回滚策略配置不兼容问题解决
java·spring boot·logback
-Da-3 小时前
【ai应用开发日记】通用未注入Bean AI提示词
java·数据库·人工智能·spring boot·sqlserver