从头开始开发一个java后端项目:4简单集成mybatis plus实现增删改查

1,151 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路
本篇文章介绍一下如何集成mybatis plus实现简单的增删改查操作,也让各位对后端编写代码有一个初步的了解

引入依赖

本文采用mysql数据库链接,如果有使用其他的数据库请自行查询官网解决。mybatis plus官网:baomidou.com/
本文引入的依赖如下

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

这里就引入了mybatis plus和mysql 差价

编写配置文件

这里我们需要有自己的mysql数据库,如果各位没有数据库的话需要自己搭建一个,有时间我写一下如何使用docker搭建mysql数据库。
我们先在自己的mysql中创建一个任意名称的数据库,然后编写自己的配置文件如下

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://ip:3306/db?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: ???
    password: ???

我这里把自己的数据库地址配置隐藏了,大家需要按照自己的修改

修改启动的Application,添加注解

我们需要使用注解定义扫描的路径,具体代码如下

package code.liang.top.admin.boot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author lmh
 */
@SpringBootApplication
@MapperScan("code.liang.top.admin.boot.modules.*.mapper")
public class AdminBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(AdminBootApplication.class, args);
    }

}

这里就会扫描code.liang.top.admin.boot.modules下所有目录里的mapper下的文件

定义一个基本类

我们在开发的时候,往往很多的实体都有统一的字段,我们把它们共同的字段封装一下,放在code.liang.top.admin.boot.commom.entity下,内容如下

package code.liang.top.admin.boot.commom.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.Version;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author lmh
 * @version 1.0
 * @description: 基本entity
 */
@Data
@Accessors(chain = true)
public class BaseEntity implements Serializable {
    @Serial
    private static final long serialVersionUID = 5384274600180456485L;
    @TableId
    private String id;
    @Version
    @ApiModelProperty(value = "版本号")
    @TableField(value = "version_no", fill = FieldFill.INSERT)
    private Integer versionNo;
    @ApiModelProperty(value = "创建人唯一标识")
    @TableField(value = "create_id", fill = FieldFill.INSERT)
    private String createId;
    @ApiModelProperty(value = "创建人姓名")
    @TableField(value = "create_name", fill = FieldFill.INSERT)
    private String createName;
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建人时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @ApiModelProperty(value = "更新人姓名")
    @TableField(value = "update_id", fill = FieldFill.INSERT_UPDATE)
    private String updateId;
    @TableField(value = "update_name", fill = FieldFill.INSERT)
    private String updateName;
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    @TableField(value = "del_flag")
    private Integer delFlag;
}

编写一些测试代码

我们先创建test文件在modules下然后创建controller、entity、mapper文件,在下边分别新建文件如下 controller/TestController

package code.liang.top.admin.boot.modules.test.controller;

import code.liang.top.admin.boot.commom.entity.ResVo;
import code.liang.top.admin.boot.modules.test.entity.Test;
import code.liang.top.admin.boot.modules.test.mapper.TestMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author Administrator
 * @version 1.0
 * @description: TODO
 */
@Api(tags="测试")
@RestController
@RequestMapping("test")
@RequiredArgsConstructor
public class TestController {
    final TestMapper testMapper;
    @PostMapping("add")
    public ResVo<Integer> add(){
        return ResVo.ok(testMapper.insert(new Test().setName(System.currentTimeMillis()+"")));
    }
    @PostMapping("del")
    public ResVo<Integer> del(@RequestParam String id){
        return ResVo.ok(testMapper.deleteById(id));
    }
    @PostMapping("update")
    public ResVo<Integer> update(@RequestParam String id){
        return ResVo.ok(testMapper.updateById((Test) new Test().setName(System.currentTimeMillis()+"").setId(id)));
    }
    @PostMapping("list")
    public ResVo<List<Test>> list(){
        return ResVo.ok(testMapper.selectList(new QueryWrapper<>()));
    }
}

entity/Test

package code.liang.top.admin.boot.modules.test.entity;

import code.liang.top.admin.boot.commom.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serial;

/**
 * @author Administrator
 * @version 1.0
 * @description: TODO
 */
@Data
@TableName("test")
@Accessors(chain = true)
public class Test  extends BaseEntity {
    @Serial
    private static final long serialVersionUID = -6900330839338689170L;
    @ApiModelProperty(value = "名称")
    @TableField("name")
    private String name;
}

mapper/TestMapper

package code.liang.top.admin.boot.modules.test.mapper;

import code.liang.top.admin.boot.modules.test.entity.Test;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
 * @author lmh
 * @version 1.0
 * @description: TestMapper
 */
public interface TestMapper extends BaseMapper<Test> {
}

创建test表

我们需要创建存储表进行测试,执行sql如下

CREATE TABLE `test` (
   `id` varchar(64) NOT NULL,
   `del_flag` tinyint(4) DEFAULT NULL,
   `create_id` varchar(64) DEFAULT NULL,
   `create_time` datetime DEFAULT NULL,
   `update_id` varchar(64) DEFAULT NULL,
   `update_time` datetime DEFAULT NULL,
   `create_name` varchar(64) DEFAULT NULL,
   `update_name` varchar(64) DEFAULT NULL,
   `version_no` int(10) DEFAULT NULL,
   `name` varchar(64) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测试表';

验证

我们重启一下项目,进入在线文档,调用add方法即可在数据库中插入数据,调用list即可查询出所有的数据

结语

今天我们简单的实现了增删改查,但是有一些不足,例如版本号,逻辑删除等,明天我们会先编写一篇搭建mysql的文章,预计后天处理这些细节
本文所有代码已上传的gitee,欢迎有兴趣的掘友们startgitee.com/liangminghu…
欢迎关注我的掘金账号:juejin.cn/user/261290…
下期预告:使用docker搭建一个mysql