MyBatis-Plus实战:从入门到夺目的10个本事

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前言

MyBatis-Plus是MyBatis的增强工具,在MyBatis底子上只做增强不做改变,简化CRUD操纵。本文总结10个实用本事,帮你快速把握MP的焦点用法。
本事1:快速入门
  1. // 依赖
  2. <dependency>
  3.     <groupId>com.baomidou</groupId>
  4.     mybatis-plus-boot-starter</artifactId>
  5.     <version>3.5.5</version>
  6. </dependency>
  7. // 实体类
  8. @TableName("t_user")
  9. public class User {
  10.     @TableId(type = IdType.AUTO)
  11.     private Long id;
  12.     private String name;
  13.     private Integer age;
  14.     private String email;
  15. }
  16. // Mapper接口
  17. public interface UserMapper extends BaseMapper<User> {
  18. }
  19. // 直接使用CRUD
  20. userMapper.insert(user);
  21. userMapper.selectById(1L);
  22. userMapper.updateById(user);
  23. userMapper.deleteById(1L);
复制代码
本事2:条件构造器QueryWrapper
  1. QueryWrapper<User> wrapper = new QueryWrapper<>();
  2. wrapper.eq("name", "张三")
  3.        .ge("age", 18)
  4.        .orderByDesc("create_time");
  5. List<User> users = userMapper.selectList(wrapper);
复制代码
本事3:Lambda条件构造器
  1. // 推荐使用LambdaWrapper,避免字段名写错
  2. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  3. wrapper.eq(User::getName, "张三")
  4.        .ge(User::getAge, 18)
  5.        .likeRight(User::getEmail, "test");
复制代码
本事4:分页查询
  1. // 配置分页插件
  2. @Configuration
  3. public class MybatisPlusConfig {
  4.     @Bean
  5.     public MybatisPlusInterceptor mybatisPlusInterceptor() {
  6.         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  7.         interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
  8.         return interceptor;
  9.     }
  10. }
  11. // 分页查询
  12. Page<User> page = new Page<>(1, 10); // 第1页,每页10条
  13. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>()
  14.     .eq(User::getStatus, 1);
  15. Page<User> result = userMapper.selectPage(page, wrapper);
  16. // 获取结果
  17. List<User> records = result.getRecords();
  18. long total = result.getTotal();
复制代码
本事5:自动添补
  1. // 实体类字段
  2. @TableField(fill = FieldFill.INSERT)
  3. private LocalDateTime createTime;
  4. @TableField(fill = FieldFill.INSERT_UPDATE)
  5. private LocalDateTime updateTime;
  6. // 自动填充处理器
  7. @Component
  8. public class MyMetaObjectHandler implements MetaObjectHandler {
  9.     @Override
  10.     public void insertFill(MetaObject metaObject) {
  11.         this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
  12.         this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
  13.     }
  14.    
  15.     @Override
  16.     public void updateFill(MetaObject metaObject) {
  17.         this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
  18.     }
  19. }
复制代码
本事6:逻辑删除
  1. // 配置
  2. mybatis-plus:
  3.   global-config:
  4.     db-config:
  5.       logic-delete-field: deleted
  6.       logic-delete-value: 1
  7.       logic-not-delete-value: 0
  8. // 实体类
  9. @TableLogic
  10. private Integer deleted;
复制代码
本事7:罗列范例处置惩罚
  1. public enum UserStatus {
  2.     NORMAL(0, "正常"),
  3.     LOCKED(1, "锁定");
  4.    
  5.     @EnumValue
  6.     private final int code;
  7.     private final String desc;
  8. }
复制代码
本事8:多租户插件
  1. @Bean
  2. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  3.     MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  4.     interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
  5.         @Override
  6.         public Expression getTenantId() {
  7.             return new LongValue(1); // 当前租户ID
  8.         }
  9.     }));
  10.     return interceptor;
  11. }
复制代码
本事9:代码天生器
  1. AutoGenerator generator = new AutoGenerator();
  2. generator.setGlobalConfig(globalConfig);
  3. generator.setDataSource(dataSourceConfig);
  4. generator.setPackageInfo(packageConfig);
  5. generator.setStrategy(strategyConfig);
  6. generator.execute();
复制代码
本事10:性能分析插件
  1. // 开发环境开启SQL性能分析
  2. @Bean
  3. public PerformanceInterceptor performanceInterceptor() {
  4.     PerformanceInterceptor interceptor = new PerformanceInterceptor();
  5.     interceptor.setMaxTime(1000); // SQL最大执行时间
  6.     interceptor.setFormat(true);  // 格式化SQL
  7.     return interceptor;
  8. }
复制代码
总结

MyBatis-Plus大大简化了MyBatis的开辟工作,把握这10个本事可以应对大部门一样平常开辟场景。焦点是机动使用条件构造器和各种插件。
本文由AI辅助创作。

免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表