MyBatis-Plus关键功能使用指南
MyBatis-Plus是一款基于MyBatis的增强工具,旨在简化开发过程,提高工作效率。本文将详细介绍MyBatis-Plus的关键功能,包括CRUD操作、条件构造器、分页插件、逻辑删除和自动填充等。
一、环境准备
在使用MyBatis-Plus之前,确保已配置好基本的Spring Boot项目,并集成了MyBatis-Plus。
1. 添加依赖
在 pom.xml
中添加MyBatis-Plus依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
AI 代码解读
2. 配置数据源
在 application.properties
中配置数据源:
spring.datasource.url=jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
AI 代码解读
二、CRUD操作
MyBatis-Plus提供了简单易用的CRUD操作。
1. 定义实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
AI 代码解读
2. 创建Mapper接口
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
AI 代码解读
3. 使用Mapper进行CRUD操作
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void crudOperations() {
// 插入数据
User user = new User(null, "John", 25, "john@example.com");
userMapper.insert(user);
// 查询数据
User userFromDB = userMapper.selectById(user.getId());
// 更新数据
userFromDB.setEmail("john.doe@example.com");
userMapper.updateById(userFromDB);
// 删除数据
userMapper.deleteById(userFromDB.getId());
}
}
AI 代码解读
三、条件构造器
MyBatis-Plus提供了丰富的条件构造器,方便进行复杂查询。
1. 使用 QueryWrapper
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "John").ge("age", 18);
List<User> users = userMapper.selectList(queryWrapper);
AI 代码解读
2. 使用 UpdateWrapper
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "John").set("age", 26);
userMapper.update(null, updateWrapper);
AI 代码解读
四、分页插件
分页是Web应用中常见的需求,MyBatis-Plus提供了简单的分页插件。
1. 配置分页插件
在配置类中添加分页插件:
@Configuration
@MapperScan("com.example.mapper")
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
AI 代码解读
2. 使用分页查询
IPage<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, new QueryWrapper<>());
AI 代码解读
五、逻辑删除
MyBatis-Plus支持逻辑删除,即不物理删除记录,而是标记为删除状态。
1. 配置逻辑删除
在实体类中添加逻辑删除字段:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
@TableLogic
private Integer deleted;
}
AI 代码解读
2. 配置逻辑删除插件
在配置类中添加逻辑删除插件:
@Configuration
@MapperScan("com.example.mapper")
public class MyBatisPlusConfig {
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
AI 代码解读
六、自动填充
自动填充功能用于在插入或更新记录时自动填充某些字段,例如创建时间和更新时间。
1. 配置自动填充
在实体类中配置自动填充字段:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
AI 代码解读
2. 定义自动填充处理器
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
AI 代码解读
七、总结
MyBatis-Plus通过简化CRUD操作、提供丰富的条件构造器、支持分页、逻辑删除和自动填充等功能,提高了开发效率,减少了重复代码。通过本文的介绍,您可以掌握MyBatis-Plus的关键功能,并将其应用于实际项目中。
思维导图
- MyBatis-Plus关键功能使用
- 环境准备
- 添加依赖
- 配置数据源
- CRUD操作
- 定义实体类
- 创建Mapper接口
- 使用Mapper进行CRUD操作
- 条件构造器
- 使用QueryWrapper
- 使用UpdateWrapper
- 分页插件
- 配置分页插件
- 使用分页查询
- 逻辑删除
- 配置逻辑删除
- 配置逻辑删除插件
- 自动填充
- 配置自动填充
- 定义自动填充处理器
- 总结
AI 代码解读
通过本文的详细介绍,您可以系统地了解并掌握MyBatis-Plus的关键功能,进一步提高开发效率和代码质量。