集成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,方便打印@Overridepublic 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 {@Autowiredprivate 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 {@Autowiredprivate 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生成策略,先默认1Luser.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、达梦数据库 、虚谷数据库 、人大金仓数据库 、南大通用数据库。