Mybatis-Plus使用技巧详解:从条件查询到分页操作

版权申诉
10 下载量 56 浏览量 更新于2024-09-11 收藏 76KB PDF 举报
"你应该知道的这些Mybatis-Plus使用技巧(小结)" Mybatis-Plus是一个在Mybatis基础上扩展的框架,它提供了很多便捷的操作数据库的方法,简化了开发过程中的SQL编写工作。以下是一些你应该知道的Mybatis-Plus使用技巧。 1. 条件查询(QueryWrapper) Mybatis-Plus提供了QueryWrapper类,用于构建动态SQL。例如,如果我们要查询年龄为20的用户信息,可以这样写: ```java QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("age", 20); List<UserInfo> list = userInfoMapper.selectList(queryWrapper); ``` 这段代码会生成SQL:`SELECT * FROM user_info WHERE age = 20`。eq()方法用于设置等于条件,其他还有ge(大于等于)、le(小于等于)等方法。 2. 条件查询(QueryWrapper lambda) 使用Lambda表达式可以使得代码更简洁,减少硬编码字段名的风险: ```java QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(UserInfo::getAge, 20); List<UserInfo> list = userInfoMapper.selectList(queryWrapper); ``` 这里的lambda表达式UserInfo::getAge表示调用UserInfo对象的getAge方法,生成相同的SQL。 3. 条件查询(LambdaQueryWrapper) LambdaQueryWrapper和QueryWrapper的lambda写法相似,但更推荐使用,因为它提供了更好的类型安全: ```java LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(UserInfo::getAge, 20); List<UserInfo> list = userInfoMapper.selectList(queryWrapper); ``` 4. 分页查询 Mybatis-Plus支持便捷的分页查询,只需要提供当前页数和每页大小: ```java Page<UserInfo> page = new Page<>(1, 10); // 第一页,每页10条 LambdaQueryWrapper<UserInfo> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(UserInfo::getAge, 20); List<UserInfo> userList = userInfoMapper.selectPage(page, queryWrapper); ``` `selectPage()`方法返回一个Page对象,包含了查询结果以及分页信息。 5. 自动填充字段 Mybatis-Plus支持自动填充创建时间和更新时间等字段,只需在实体类上添加@TableField注解,并指定insertStrategy或updateStrategy: ```java @Data @Entity public class UserInfo { @TableId private Long id; private String name; @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.UPDATE) private Date updateTime; } ``` 6. CRUD操作 Mybatis-Plus提供了便捷的插入、更新、删除方法,如insert(), updateById(), deleteById()等,使得数据库操作更加简单。 7. 主键生成策略 默认使用的是雪花算法(Snowflake),也可以自定义主键生成策略,例如使用数据库自增: ```java @Data @TableName("user_info") public class UserInfo { @TableId(value = "id", type = IdType.AUTO) private Long id; // ... } ``` `type = IdType.AUTO`表示使用数据库自增。 8. 批量操作 通过`insertBatch()`,`updateBatch()`等方法,可以进行批量插入和更新操作,提高性能。 9. 根据条件更新 `updateByMap()`方法允许你根据某些条件更新特定字段,无需手动构建复杂的SQL。 10. 数据权限控制 Mybatis-Plus支持数据权限控制,可以在全局配置中启用,然后在实体类中定义数据权限字段。 这些只是Mybatis-Plus的一部分技巧,实际使用中还有很多其他功能,如乐观锁、物理删除、SQL构造器等,都能帮助开发者更高效地管理数据库操作。在日常开发中,熟练掌握Mybatis-Plus的各种技巧,可以极大地提升开发效率。