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

}
相关推荐
努力努力再努力wz13 分钟前
【Qt入门系列】深入理解信号与槽:从事件响应到自定义信号机制
c语言·开发语言·数据结构·数据库·c++·qt·mysql
Java成神之路-21 分钟前
解密 MySQL 索引性能:为什么主键必须有序?
mysql
北风朝向26 分钟前
Spring Boot 集成 Open WebUI 实现 AI 流式对话
人工智能·spring boot·状态模式
未若君雅裁29 分钟前
MySQL索引原理-InnoDB-B+树结构与查询过程
b树·mysql
海棠Flower未眠1 小时前
Spring Boot 2.4后,特定配置文件不能再使用spring.profiles.include的解决思路
数据库·spring boot·spring
jran-1 小时前
MySQL单表操作
数据库·mysql
C雨后彩虹1 小时前
SpringBoot整合Redis String,全套原生API讲解,覆盖80%缓存业务场景
java·数据结构·spring boot·redis·string
重生之小比特2 小时前
【MySQL 数据库】事务
数据库·mysql
代码中介商2 小时前
从零掌握MySQL:安装配置与C语言连接实战
数据库·mysql