集成Mybatis-plus
- Mybatis-plus
- 集成Mybatis-plus步骤
- 小结
Mybatis-plus
Mybatis-plus官网
MyBatisPlus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。它引入了一些新的特性,如自动填充、乐观锁插件、逻辑删除等,同时还内置了一些常用的CRUD操作,极大地减少了开发人员的工作量。
集成Mybatis-plus步骤
①在tps-system-biz
模块下build.gradle
添加Mybatis-plus依赖;数据库我用的是Mysql8,所以还得添加Mysql驱动
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-web'
//Mybatis-plus依赖
implementation 'com.baomidou:mybatis-plus-spring-boot3-starter:3.5.7'
//mysql驱动
implementation 'mysql:mysql-connector-java:8.0.23'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
② Springboot创建默认配置文件为application.properties
,在配置文件里面添加mysql配置(默认本地已经安装mysql数据库)
# 数据库驱动类
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/tps?useSSL=false&serverTimezone=UTC
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=root
③在数据库创建一张表system_user,同时随便加入一条或者多条数据
CREATE TABLE `system_user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户账号',
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '密码',
`nickname` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户昵称',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
`dept_id` bigint NULL DEFAULT NULL COMMENT '部门ID',
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '用户邮箱',
`mobile` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '手机号码',
`sex` tinyint NULL DEFAULT 0 COMMENT '用户性别',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '头像地址',
`status` tinyint NOT NULL DEFAULT 0 COMMENT '帐号状态(0正常 1停用)',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` char(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 129 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息表';
SQL语句
INSERT INTO `system_user` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `email`, `mobile`, `sex`, `avatar`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`, `tenant_id`) VALUES (1, '张三', '123456', '往事随风', NULL, 1, 'zhangsan@163.com', '15478774547', 0, '', 0, '', '2024-07-18 14:49:44', '', '2024-07-18 14:49:44', '0', 0);
④ 在tps-system-biz
模块下新增实体类SystemUser
package com.tps.cloud.system.entity;
import java.util.Date;
import java.io.Serializable;
/**
* 用户信息表(SystemUser)实体类
*
* @author makejava
* @since 2024-07-18 11:35:11
*/
public class SystemUser implements Serializable {
private static final long serialVersionUID = 544417121746252574L;
/**
* 用户ID
*/
private Long id;
/**
* 用户账号
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 用户昵称
*/
private String nickname;
/**
* 备注
*/
private String remark;
/**
* 部门ID
*/
private Long deptId;
/**
* 用户邮箱
*/
private String email;
/**
* 手机号码
*/
private String mobile;
/**
* 用户性别
*/
private Integer sex;
/**
* 头像地址
*/
private String avatar;
/**
* 帐号状态(0正常 1停用)
*/
private Integer status;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 是否删除
*/
private String deleted;
/**
* 租户编号
*/
private Long tenantId;
//覆盖toString,方便打印
@Override
public String toString() {
return "Person: " + username + " " + nickname;
}
...省略Getter/Setter方法
}
⑤新建mapper包,编写 Mapper 接口类 SystemUserMapper .java
package com.tps.cloud.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tps.cloud.system.entity.SystemUser;
public interface SystemUserMapper extends BaseMapper<SystemUser> {
}
⑥在 TpsSystemBizApplication 启动类中添加 @MapperScan 注解,扫描 mapper 文件夹:
package com.tps.cloud.system;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.tps.cloud.system.mapper")
public class TpsSystemBizApplication {
public static void main(String[] args) {
SpringApplication.run(TpsSystemBizApplication.class, args);
}
}
⑦在DemoController 类中添加selectUser方法,从数据库查询用户信息,这里我们需要通过@Autowired注入SystemUserMapper
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/demo")
public class DemoController {
@Autowired
private SystemUserMapper systemUserMapper;
@GetMapping("/get")
public String get() {
return "恭喜你,你的接口通了!";
}
@GetMapping("/selectUser")
public void selectUser() {
System.out.println(("----- selectAll method test ------"));
List<SystemUser> userList = systemUserMapper.selectList(null);
userList.forEach(System.out::println);
}
}
⑧ 通过ApiFox调用http://localhost:8080/demo/selectUser接口,IDEA console打印结果如下:
⑨ 现在我们完善一下接口,针对用户的增删改查接口,然后用ApiFox测试一下。
package com.tps.cloud.system.controller;
import com.tps.cloud.system.entity.SystemUser;
import com.tps.cloud.system.mapper.SystemUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/user")
public class SystemUserController {
@Autowired
private SystemUserMapper systemUserMapper;
/**
* 查询所有用户
*/
@GetMapping("/selectUser")
public List<SystemUser> selectUser() {
List<SystemUser> userList = systemUserMapper.selectList(null);
return userList;
}
/**
* 保存用户
*/
@PostMapping("/saveUser")
public void saveUser(SystemUser user) {
//设置ID值,目前缺少ID生成策略,先默认1L
user.setId(1l);
systemUserMapper.insert(user);
}
/**
* 更新用户信息
*/
@PutMapping("/updateUser")
public void updateUser(SystemUser user) {
systemUserMapper.updateById(user);
}
/**
* 根据用户id删除用户
*/
@DeleteMapping("/deleteUser")
public void deleteUser(String userId) {
systemUserMapper.deleteById(userId);
}
/**
* 根据用户id查询用户
*/
@GetMapping("/selectUserById")
public SystemUser selectUserById(String userId) {
SystemUser user = systemUserMapper.selectById(userId);
return user;
}
}
小结
通过以上几个简单的步骤,我们实现 system_user表的 CRUD 功能,甚至连 XML 文件都不用编写!
从以上步骤中,我们可以看到集成 MyBatis-Plus 非常的简单,只需要引入 starter 依赖,简单进行配置即可使用。
MyBatisPlus不仅支持mysql,还支持的数据库:
- mariadb 、oracle 、db2 、h2 、hsql 、sqlite 、postgresql 、sqlserver、presto 、Gauss 、Firebird。
- Phoenix 、clickhouse 、Sybase ASE 、 OceanBase、达梦数据库 、虚谷数据库 、人大金仓数据库 、南大通用数据库。