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 中實現復雜的查詢邏輯。