MyBatis-Plus:深度解析入门与实战技巧

一、MyBatis-Plus 简介
MyBatis-Plus 是一款优秀的持久层框架,它是对 MyBatis 的扩展,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 旨在通过提供一些简单的注解或配置,实现 MyBatis 的诸多功能,如自动填充、乐观锁、分页插件等。
二、MyBatis-Plus 入门
1. 环境搭建
(1)创建 Maven 项目,添加依赖
```xml
```
(2)配置数据源
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
```
2. 创建实体类
```java
public class User {
private Long id;
private String name;
private Integer age;
private String email;
// 省略 getter 和 setter 方法
}
```
3. 创建 Mapper 接口
```java
@Mapper
public interface UserMapper extends BaseMapper
}
```
4. 创建 Service 层
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List
return userMapper.selectList(null);
}
}
```
5. 创建 Controller 层
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/findAll")
public List
return userService.findAll();
}
}
```
三、MyBatis-Plus 实战技巧
1. 自动填充
MyBatis-Plus 提供了自动填充功能,可以自动为字段赋值。例如,为创建时间和更新时间字段自动赋值当前时间。
```java
@TableName("user")
public class User {
@TableId
private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
// 省略 getter 和 setter 方法
}
```
2. 乐观锁
MyBatis-Plus 支持乐观锁,通过在实体类中添加 `@Version` 注解实现。当更新数据时,如果版本号不匹配,则更新失败。
```java
@TableName("user")
public class User {
@TableId
private Long id;
private String name;
private Integer age;
private String email;
@Version
private Integer version;
// 省略 getter 和 setter 方法
}
```
3. 分页插件
MyBatis-Plus 提供了分页插件,可以方便地实现分页查询。
```java
public class PaginationInterceptor extends PaginationInnerInterceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
// 获取分页参数
Page> page = (Page>) invocation.getArgs()[0];
if (page instanceof IPage) {
IPage> iPage = (IPage>) page;
// 设置分页参数
iPage.setSize(10);
iPage.setCurrent(1);
}
return super.intercept(invocation);
}
}
```
在配置文件中添加分页插件:
```yaml
mybatis-plus:
configuration:
Interceptor:
pagination:
enabled: true
```
4. 代码生成器
MyBatis-Plus 提供了代码生成器,可以一键生成实体类、Mapper 接口、Mapper XML 文件、Service 层、Controller 层等。
```java
public class CodeGenerator {
public static void main(String[] args) {
AutoGenerator generator = new AutoGenerator()
.global(new GlobalConfig.Builder()
.outputDir(System.getProperty("user.dir") + "/src/main/java")
.author("张三")
.build())
.packageInfo(new PackageConfig.Builder()
.parent("com.example.demo")
.entity("entity")
.mapper("mapper")
.service("service")
.controller("controller")
.build())
.strategy(new Strategy.Builder()
.addInclude("user") // 指定生成的表名
.entityBuilder()
.enableLombok() // 启用 Lombok
.controllerBuilder()
.enableRestStyle() // 启用 Rest 风格
.build())
.build();
generator.execute();
}
}
```
四、总结
MyBatis-Plus 是一款功能强大的持久层框架,可以帮助开发者提高开发效率。通过本文的介绍,相信大家对 MyBatis-Plus 的入门和实战技巧有了更深入的了解。在实际项目中,可以根据需求选择合适的插件和功能,实现快速开发。






