MyBatis Plus提供了多种方式实现动态SQL:
1. 通过WhereWrapper实现
LambdaQueryWrapper<User> query = new LambdaQueryWrapper<>();
query.eq(condition, value);
userMapper.selectList(query);
WhereWrapper可以实现条件动态拼接。
2. 使用@Where注解
@Where("name like concat('%',#{name},'%')")
List<User> selectByName(@Param("name") String name);
在方法参数上添加@Where,动态查询。
3. 直接使用SQL片段
@Select("select * from user where ${filter}")
List<User> selectByFilter(@Param("filter") String filter);
通过${}调用参数实现动态SQL。
4. 使用@Version注解
乐观锁版本号注解,实现版本更新检测。
@Version
private Integer version;
5. 使用@TableLogic注解
逻辑删除字段,实现逻辑删除。
@TableLogic
private Integer deleted;
6. 使用@SQL注解
@Select("select * from user ${table} ${ew.customSqlSegment}")
List<User> selectByCustom(@Param("ew") Wrapper<User> queryWrapper);
通过注解封装复杂SQL。
以上方法可以实现MyBatis Plus的动态SQL:
- 通过Wrapper实现
- 使用@Where注解
- 通过SQL片段
- 使用乐观锁、逻辑删除等注解
- 使用@SQL注解封装复杂SQL