MyBatis Plus 提供了多种方法来进行条件构造,主要通过 QueryWrapper(查询条件封装器)和 UpdateWrapper(更新条件封装器)来实现。
一、QueryWrapper
-
等值判断
eq
:等于判断。例如:queryWrapper.eq("column_name", value)
表示查询某列等于特定值的记录。
-
范围判断
between
:判断值是否在指定范围内。例如:queryWrapper.between("column_name", startValue, endValue)
表示查询某列值在给定的起始值和结束值之间的记录。gt
(greater than):大于判断。例如:queryWrapper.gt("column_name", value)
表示查询某列值大于特定值的记录。ge
(greater than or equal):大于等于判断。例如:queryWrapper.ge("column_name", value)
。lt
(less than):小于判断。例如:queryWrapper.lt("column_name", value)
。le
(less than or equal):小于等于判断。例如:queryWrapper.le("column_name", value)
。
-
模糊查询
like
:模糊匹配。例如:queryWrapper.like("column_name", "value%")
表示查询某列值以特定字符串开头的记录;queryWrapper.likeRight("%value")
表示查询某列值以特定字符串结尾的记录;queryWrapper.like("%value%")
表示查询某列值包含特定字符串的记录。
-
嵌套条件
nested
:用于构建嵌套条件。例如:QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.nested(wrapper -> wrapper.eq("age", 30).and(wrapper.like("name", "test%")));
or
:用于连接多个条件,只要满足其中一个条件即可。例如:queryWrapper.eq("gender", "male").or(wrapper -> wrapper.eq("gender", "female"));
-
排序
orderBy
:用于指定排序方式。例如:queryWrapper.orderByAsc("column_name")
表示按照某列升序排序;queryWrapper.orderByDesc("column_name")
表示按照某列降序排序。
二、UpdateWrapper
-
等值设置
set
:用于设置更新的值。例如:updateWrapper.set("column_name", newValue)
表示将某列的值更新为特定值。
-
条件判断
- 与 QueryWrapper 类似的判断方法也可以在 UpdateWrapper 中使用,用于确定更新的条件。例如:
updateWrapper.eq("column_name", value).set("update_column", newValue)
表示当某列等于特定值时,更新另一列的值。
- 与 QueryWrapper 类似的判断方法也可以在 UpdateWrapper 中使用,用于确定更新的条件。例如:
通过这些方法,你可以灵活地构建各种复杂的查询和更新条件,满足不同的业务需求。