Skip to content
广告❤️成为赞助商

条件构造器

使用MongoPlus快速构建条件

说明:

  • 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中,例如:query.like(StringUtils.isNotBlank(name), Entity::getName, name) .eq(age!=null && age >= 0, Entity::getAge, age)
  • 以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true

警告:

不支持以及不赞成在 RPC 调用中把 QueryChainWrapper 进行传输

  1. QueryChainWrapper 很重
  2. 传输 QueryChainWrapper 可以类比为你的 controller 用 map 接收值(开发一时爽,维护火葬场)
  3. 正确的 RPC 调用姿势是写一个 DTO 进行传输,被调用方再根据 DTO 执行相应的操作

custom

java
custom(BasicDBObject basicDBObject);
custom(BSON bson);
  • 自定义
  • 例:new BasicDBObject("$eq",new BasicDBObject("_id","1"))

eq

java
eq(SFunction<T,Object> column, Object val)
eq(boolean condition, SFunction<T,Object> column, Object val)
  • 等于 =
  • 例: eq("name", "老王")--->name = '老王'

ne

java
ne(SFunction<T,Object> column, Object val)
ne(boolean condition, SFunction<T,Object> column, Object val)
  • 不等于 <>
  • 例: ne("name", "老王")--->name <> '老王'

gt

java
gt(SFunction<T,Object> column, Object val)
gt(boolean condition, SFunction<T,Object> column, Object val)
  • 大于 >
  • 例: gt("age", 18)--->age > 18

gte

java
gte(SFunction<T,Object> column, Object val)
gte(boolean condition, SFunction<T,Object> column, Object val)
  • 大于等于 >=
  • 例: gte("age", 18)--->age >= 18

lt

java
lt(SFunction<T,Object> column, Object val)
lt(boolean condition, SFunction<T,Object> column, Object val)
  • 小于 <
  • 例: lt("age", 18)--->age < 18

lte

java
lte(SFunction<T,Object> column, Object val)
lte(boolean condition, SFunction<T,Object> column, Object val)
  • 小于等于 <=
  • 例: lte("age", 18)--->age <= 18

like

java
like(SFunction<T,Object> column, Object val)
like(boolean condition, SFunction<T,Object> column, Object val)
  • LIKE '%值%'
  • 例: like("name", "王")

likeLeft

java
likeLeft(SFunction<T,Object> column, Object val)
likeLeft(boolean condition, SFunction<T,Object> column, Object val)
  • LIKE '%值'
  • 例: like("name", "^王")

likeRight

java
likeRight(SFunction<T,Object> column, Object val)
likeRight(boolean condition, SFunction<T,Object> column, Object val)
  • LIKE '%值'
  • 例: like("name", "王$")

notLike

java
notLike(SFunction<T,Object> column, Object val)
notLike(boolean condition, SFunction<T,Object> column, Object val)
  • NOT LIKE '%值%'

  • 例: notLike("name", "王")

  • NOT LIKE '值%'

  • 例: notLikeRight("name", "王")

in

java
in(SFunction<T,Object> column, Collection<?> value)
in(boolean condition, SFunction<T,Object> column, Collection<?> value)
  • 字段 IN (value.get(0), value.get(1), ...)
  • 例: in("age",{1,2,3})--->age in (1,2,3)
java
in(SFunction<T,Object> column, Object... values)
in(boolean condition, SFunction<T,Object> column, Object... values)
  • 字段 IN (v0, v1, ...)
  • 例: in("age", 1, 2, 3)--->age in (1,2,3)

nin

java
nin(SFunction<T,Object> column , Collection<Object> valueList)
nin(boolean condition , String column , Collection<Object> valueList)
  • 字段 nin (value.get(0), value.get(1), ...)
  • 例: notIn("age",{1,2,3})--->age not in (1,2,3)

and

java
and(LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
and(boolean condition,LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
  • 并且 在or中使用

orderByAsc

java
orderByAsc(SFunction<T,Object> columns)
orderByAsc(boolean condition, SFunction<T,Object> columns)
  • 排序:ORDER BY 字段, ASC
  • 例: orderByAsc("id", "name")

orderByDesc

java
orderByDesc(SFunction<T,Object> columns)
orderByDesc(boolean condition, SFunction<T,Object>... columns)
  • 排序:ORDER BY 字段, DESC
  • 例: orderByDesc("id", "name")

or

java
or(SFunction<T,Object> column,Object value)
or(boolean condition,String column,Object value)
or(LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
or(boolean condition,LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
  • 或者

nor

java
nor(boolean condition , LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
nor(LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
nor(boolean condition , SFunction<T,Object> column,Object value)
nor(SFunction<T,Object> column,Object value)
nor(boolean condition,String column,Object value)
nor(String column , Object value)
  • 查询的文档必须不符合所有条件

type

java
type(SFunction<T,Object> column, TypeEnum value)
type(String column, TypeEnum value)
type(SFunction<T,Object> column, String value)
type(String column, String value)
type(SFunction<T,Object> column, Integer value)
type(String column, Integer value)
  • 指定查询的字段类型

exists

java
exists(SFunction<T,Object> column,Boolean value)
exists(boolean condition,SFunction<T,Object> column,Boolean value)
  • 字段是否存在

not

java
not(CompareCondition compareCondition)
not(boolean condition,CompareCondition compareCondition)

expr

java
expr(CompareCondition compareCondition)
expr(boolean condition,CompareCondition compareCondition)
  • 运行计算的表达式

mod

java
mod(boolean condition,SFunction<T,Object> column,long divide,long remain)
mod(SFunction<T,Object> column,long divide,long remain)
mod(boolean condition,SFunction<T,Object> column,Collection<Long> value)
mod(SFunction<T,Object> column,Collection<Long> value)
mod(boolean condition,String column , long divide,long remain)
mod(String column , long divide,long remain)
mod(boolean condition,String column,Collection<Long> value)
mod(String column,Collection<Long> value)
  • 字段值符合余数

elemMatch

java
elemMatch(boolean condition,SFunction<T,Object> column , LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
elemMatch(SFunction<T,Object> column , LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
elemMatch(boolean condition,String column , LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
elemMatch(String column , LambdaQueryChainWrapper<T> lambdaQueryChainWrapper)
  • 匹配数组中的值

between

java
Children between(boolean condition , SFunction<T,Object> column,Object gte,Object lte,boolean convertGtOrLt);
Children between(SFunction<T,Object> column,Object gte,Object lte,boolean convertGtOrLt);
Children between(boolean condition,String column,Object gte,Object lte,boolean convertGtOrLt);
Children between(String column,Object gte,Object lte,boolean convertGtOrLt);
  • 在...之间
  • 布尔类型的参数convertGtOrLt为是否转换为大写和小写,因为需要的两个值,默认取的是大于等于XXX,小于等于XXX

all

java
all(boolean condition,SFunction<T,Object> column,Collection<Object> value)
all(SFunction<T,Object> column,Collection<Object> value)
all(boolean condition,String column,Collection<Object> value)
all(String column,Collection<Object> value)
  • 匹配数组中的值 必须同时包含指定的多个元素

regex

java
regex(boolean condition, SFunction<T,Object> column, Object value)
regex(SFunction<T,Object> column,Object value)
regex(boolean condition,String column,Object value)
regex(String column,Object value)
  • 正则表达式查询

text

java
text(boolean condition , SFunction<T,Object> column, Object value)
text(SFunction<T,Object> column, Object value)
text(boolean condition , String column, Object value)
  • 文本查询

QueryWrapper

说明:

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取

project

java
project(Projection... projection)
project(List<Projection> projectionList)
select(boolean displayId, Projection... projection)
  • 设置查询字段

    说明:

    以上方法分为两类.
    第二类方法为:过滤查询字段(主键除外),入参不包含 class 的调用前需要wrapper内的entity属性有值! 这两类方法重复调用以最后一次为准

  • 例: select("id", "name", "age")
  • 例: select(i -> i.getProperty().startsWith("test"))

UpdateWrapper

说明:

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!

set

java
set(String column, Object val)
set(boolean condition, String column, Object val)
  • SQL SET 字段
  • 例: set("name", "老李头")
  • 例: set("name", "")--->数据库字段值变为空字符串
  • 例: set("name", null)--->数据库字段值变为null

lambda

  • 获取 LambdaWrapper
    QueryWrapper中是获取LambdaQueryWrapper
    UpdateWrapper中是获取LambdaUpdateWrapper

链式调用 lambda 式

java
// 区分:
// 链式调用 普通
UpdateChainWrapper<T> update();
// 链式调用 lambda 式。注意:不支持 Kotlin 
LambdaUpdateChainWrapper<T> lambdaUpdate();

// 等价示例:
query().eq("id", value).one();
lambdaQuery().eq(Entity::getId, value).one();

// 等价示例:
update().eq("id", value).remove();
lambdaUpdate().eq(Entity::getId, value).remove();