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

}
相关推荐
Flash.kkl17 分钟前
C++基于websocketpp的多用户网页五子棋项目
开发语言·网络·数据库·c++·websocket·mysql
二哈赛车手35 分钟前
新人笔记---继图片搜索功能后续以及AI网络搜索功能一些经验与踩坑点,吐槽一下自己在做这方面的崩溃瞬间
java·网络·人工智能·spring boot·笔记·spring
javahongxi1 小时前
Spring Cloud Trace 链路实现
java·spring boot·spring cloud
屋外雨大,惊蛰出没1 小时前
spring boot+mybatis开发基础复习
java·spring boot·后端
小此方2 小时前
Re:Mysql数据库基础篇(一):CentOS/Linux 环境下的完整安装/运行/登录Mysql流程与首次登录异常处理
linux·数据库·mysql
IT空门:门主2 小时前
MySQL MCP Server 从零安装到使用实战,AI 直接查询数据库
数据库·人工智能·mysql
Jul1en_2 小时前
【Redis】事务详解、WATCH 实现思想
java·spring boot·redis·mysql·java-ee
霸道流氓气质2 小时前
Spring Boot + Jasypt 实战指南:配置文件敏感信息加密完全手册
数据库·spring boot·oracle
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第94题】【Mysql篇】第24题:什么是单路排序?什么是双路排序??
java·开发语言·数据库·mysql·面试·排序算法
csdn_aspnet2 小时前
mysql 查询树形,id与pid关联
数据库·mysql·tree·树形