MyBatis-Plus的几种常见用法
MyBatis-Plus(MP)是一个 MyBatis 的增强工具,它在不改变 MyBatis 核心功能的基础上,为其提供了一系列强大的功能和便捷的操作。以下是 MyBatis-Plus 的几种常见用法,涵盖基本的 CRUD 操作、条件构造器、分页插件和自动填充等内容。
一、基本CRUD操作
MyBatis-Plus 提供了基础的 CRUD 接口,使得开发者无需编写大量重复的 SQL 语句,只需继承相应的 Mapper 接口即可使用。
新增记录:
@Autowired private UserMapper userMapper; public void addUser(User user) { userMapper.insert(user); }
删除记录:
@Autowired private UserMapper userMapper; public void deleteUserById(Long id) { userMapper.deleteById(id); }
更新记录:
@Autowired private UserMapper userMapper; public void updateUser(User user) { userMapper.updateById(user); }
查询记录:
@Autowired private UserMapper userMapper; public User getUserById(Long id) { return userMapper.selectById(id); } public List<User> getAllUsers() { return userMapper.selectList(null); }
二、条件构造器
条件构造器(Wrapper)是 MyBatis-Plus 提供的强大功能,用于动态构建查询条件,避免拼接 SQL 语句。
单条件查询:
QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", "John"); List<User> users = userMapper.selectList(queryWrapper);
多条件查询:
QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", "John").gt("age", 18); List<User> users = userMapper.selectList(queryWrapper);
模糊查询:
QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.like("name", "John"); List<User> users = userMapper.selectList(queryWrapper);
三、分页插件
分页查询是开发中常见的需求,MyBatis-Plus 提供了分页插件,简化分页查询的实现。
配置分页插件:
@Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; }
分页查询:
IPage<User> page = new Page<>(1, 10); // 查询第1页,每页10条记录 QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.gt("age", 18); IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
四、自动填充
MyBatis-Plus 支持自动填充功能,能够在插入和更新时自动填充字段值。
定义自动填充字段:
@TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;
配置自动填充处理器:
@Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime", new Date(), metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime", new Date(), metaObject); } }
思维导图
MyBatis-Plus 常见用法
基本CRUD操作
条件构造器
分页插件
自动填充
新增记录
删除记录
更新记录
查询记录
单条件查询
多条件查询
模糊查询
配置分页插件
分页查询
定义自动填充字段
配置自动填充处理器
总结
MyBatis-Plus 为 MyBatis 提供了许多增强功能,使得开发更加便捷高效。通过基础的 CRUD 操作、条件构造器、分页插件和自动填充等功能,开发者可以显著减少代码量,提高开发效率。在实际应用中,根据具体需求选择合适的功能模块,能够更好地利用 MyBatis-Plus 提升项目开发效率。