MyBatis-Plus(简称MP)是一个 MyBatis 的增强工具,用于简化 MyBatis 开发
LambdaQueryWrapper 是 MyBatis-Plus 提供的一个查询条件构造器,支持链式调用。你可以使用它来构建复杂的查询条件。例如:
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getAge, 25) // 年龄等于25
.like(User::getName, "张%") // 名字以"张"开头
.between(User::getCreateTime, startTime, endTime); // 创建时间在指定范围内
List<User> users = userMapper.selectList(queryWrapper);
QueryWrapper 是 MyBatis-Plus 提供的另一个查询条件构造器,与 LambdaQueryWrapper 类似,但不使用 Java 8 的 Lambda 表达式。例如:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 25) // 年龄等于25
.like("name", "张%") // 名字以"张"开头
.between("create_time", startTime, endTime); // 创建时间在指定范围内
List<User> users = userMapper.selectList(queryWrapper);
如果你需要更复杂的查询逻辑,可以在对应的 Mapper XML 文件中编写自定义查询。例如:
<!-- UserMapper.xml --><select id="selectUsersByComplexCondition" resultType="com.example.entity.User">
SELECT * FROM user
WHERE age = #{age}
AND name LIKE #{namePattern}
AND create_time BETWEEN #{startTime} AND #{endTime}
</select>
然后在对应的 Mapper 接口中添加方法声明:
public interface UserMapper extends BaseMapper<User> {
List<User> selectUsersByComplexCondition(@Param("age") int age, @Param("namePattern") String namePattern, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
}
最后在服务类中调用该方法:
List<User> users = userMapper.selectUsersByComplexCondition(25, "张%", startTime, endTime);
通过以上方法,你可以在 MyBatis-Plus 中实现复杂的查询逻辑。