MyBatis Plus的动态SQL怎么使用?代码实例讲解

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