本文已参与「新人创作礼」活动,一起开启掘金创作之路
本篇文章介绍一下如何集成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