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));
    }

}
相关推荐
2601_949817725 小时前
Spring Boot3.3.X整合Mybatis-Plus
spring boot·后端·mybatis
不瘦80斤不改名6 小时前
深入浅出 MySQL(一):一文理清 SQL 核心规范与五大分类
数据库·sql·mysql
woniu_buhui_fei6 小时前
MySQL知识整理二
数据库·mysql
uNke DEPH6 小时前
Spring Boot的项目结构
java·spring boot·后端
zhenxin01226 小时前
Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目
spring boot·后端·spring
zhenxin01228 小时前
【wiki知识库】07.用户管理后端SpringBoot部分
spring boot·后端·状态模式
看海的四叔8 小时前
【SQL】SQL同环比计算的多种实现方式
数据库·hive·sql·mysql·数据分析·同环比
SeSs IZED8 小时前
SSM与Springboot是什么关系? -----区别与联系
java·spring boot·后端
勿忘,瞬间8 小时前
SpringBoot配置文件
java·spring boot·后端
2601_949814498 小时前
Spring Boot中使用Server-Sent Events (SSE) 实现实时数据推送教程
java·spring boot·后端