java
2021-08-23
2021-08-23
学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹
在mybatis-plus
的条件构造器中如果我们想要过滤字段,则可以使用select
函数
官方文档介绍如下:
这里分为两类,其中第一个例子:select("id", "name", "age")
可以用于一般Wrapper
如果是lambdaQueryWrapper
,则需要使用lambda
,例如
1 | Wrappers.lambdaQuery(UserDetail.builder().build()).select(UserDetail::getUsername,UserDetail::getAvatar) |
第二类,我们可以按照某种规则去匹配
例如这里我只要password
以外的字段
写法如下:
1 | Wrappers.lambdaQuery(UserDetail.builder().build()).select(tableFieldInfo -> !tableFieldInfo.getProperty().equals(PropertyNamer.methodToProperty(LambdaUtils.resolve(UserDetail::getPassword).getImplMethodName()))); |
官方文档的例子是过滤出以test
开头的属性
还有源码注释里的例子如下:
例1: 只要
java
字段名以 “test
” 开头的-> select(i -> i.getProperty().startsWith("test"))
例2: 只要java
字段属性是CharSequence
类型的-> select(TableFieldInfo::isCharSequence)
例3: 只要java
字段没有填充策略的-> select(i -> i.getFieldFill() == FieldFill.DEFAULT)
例4: 要全部字段-> select(i -> true)
例5: 只要主键字段-> select(i -> false)