使用MyBatis Plus的动态SQL特性可以方便地进行多条件查询,以下是一种常见的方式:

  1. 创建一个实体类,用于存放查询条件的属性;
  2. 在Mapper接口中定义一个方法,方法的参数传入实体类对象;
  3. 在Mapper的XML文件中使用<if>标签来判断每个条件是否存在,如果存在则拼接到SQL中;
  4. 使用MyBatis Plus提供的Wrapper类来实现动态拼接SQL,可以使用QueryWrapper或者LambdaQueryWrapper
  5. 在Service层调用Mapper接口的方法,传入查询条件的实体类对象,即可实现动态拼接SQL的多条件查询。

以下是一个示例:

  1. 定义实体类UserQuery,存放查询条件的属性:
public class UserQuery {
    private String username;
    private Integer age;
    // getter和setter方法
}
  1. 在Mapper接口中定义一个方法,方法的参数传入UserQuery对象:
public interface UserMapper extends BaseMapper<User> {
    List<User> selectByQuery(UserQuery query);
}
  1. 在Mapper的XML文件中使用<if>标签判断每个条件是否存在:
<select id="selectByQuery" resultMap="BaseResultMap">
  SELECT * FROM user
  <where>
    <if test="username != null and username != ''">
      AND username = #{username}
    </if>
    <if test="age != null">
      AND age = #{age}
    </if>
  </where>
</select>
  1. 在Service层调用Mapper接口的方法,传入查询条件的实体类对象:
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> findByQuery(UserQuery query) {
        return userMapper.selectByQuery(query);
    }
}

这样就可以根据传入的查询条件动态拼接SQL进行多条件查询了。


原文地址: https://www.cveoy.top/t/topic/pu03 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录