概述
mybatis plus条件拼接
条件构造器
案例table
AbstractWrapper
allEq:全部eq(或个别isNull)
eq:等于 =
ne:不等于 <>
gt:大于 >
ge:大于等于 >=
lt:小于 <
le:小于等于 <=
between:BETWEEN 值1 AND 值2
notBetween:NOT BETWEEN 值1 AND 值2
like:LIKE '%值%'
notLike:NOT LIKE '%值%'
likeLeft:LIKE '%值'
likeRight:LIKE '值%'
isNull:字段 IS NULL
isNotNull: 字段 IS NULL
in:字段 IN
notIn:字段 NOT IN
inSql:字段 IN ( sql语句 )
notInSql:字段 NOT IN ( sql语句 )
groupBy:分组:GROUP BY 字段, ...
orderByAsc:排序:ORDER BY 字段, ... ASC
orderByDesc 排序:ORDER BY 字段, ... DESC
orderBy:排序:ORDER BY 字段, ...
having:HAVING ( sql语句 )
or:拼接 OR
and:AND 嵌套
nested:正常嵌套 不带 AND 或者 OR
apply:拼接 sql
last:无视优化规则直接拼接到 sql 的最后
exists:拼接 EXISTS ( sql语句 )
notExists:拼接 NOT EXISTS ( sql语句 )
QueryWrapper(select)
select:设置查询字段
excludeColumns:排除查询字段
UpdateWrapper(update)
set
setSql:设置 SET 部分 SQL
lambda
使用 Wrapper 自定义SQL
Service.java
方案一 注解方式 Mapper.java
方案二 XML形式 Mapper.xml
分页查询
自定义SQL查询分页数据
热部署(已过时)
逻辑删除(不建议使用)
配置
使用
枚举
配置
实现 IEnum 接口
使用
条件构造器
案例table
AbstractWrapper
allEq:全部eq(或个别isNull)
eq:等于 =
ne:不等于 <>
gt:大于 >
ge:大于等于 >=
lt:小于 <
le:小于等于 <=
between:BETWEEN 值1 AND 值2
notBetween:NOT BETWEEN 值1 AND 值2
like:LIKE '%值%'
notLike:NOT LIKE '%值%'
likeLeft:LIKE '%值'
likeRight:LIKE '值%'
isNull:字段 IS NULL
isNotNull: 字段 IS NULL
in:字段 IN
notIn:字段 NOT IN
inSql:字段 IN ( sql语句 )
notInSql:字段 NOT IN ( sql语句 )
groupBy:分组:GROUP BY 字段, ...
orderByAsc:排序:ORDER BY 字段, ... ASC
orderByDesc 排序:ORDER BY 字段, ... DESC
orderBy:排序:ORDER BY 字段, ...
having:HAVING ( sql语句 )
or:拼接 OR
and:AND 嵌套
nested:正常嵌套 不带 AND 或者 OR
apply:拼接 sql
last:无视优化规则直接拼接到 sql 的最后
exists:拼接 EXISTS ( sql语句 )
notExists:拼接 NOT EXISTS ( sql语句 )
QueryWrapper(select)
select:设置查询字段
excludeColumns:排除查询字段
UpdateWrapper(update)
set
setSql:设置 SET 部分 SQL
lambda
使用 Wrapper 自定义SQL
Service.java
方案一 注解方式 Mapper.java
方案二 XML形式 Mapper.xml
分页查询
自定义SQL查询分页数据
热部署(已过时)
逻辑删除(不建议使用)
配置
使用
枚举
配置
实现 IEnum 接口
使用
来源: mybatis plus官网
mybatis plus条件拼接
条件构造器
说明
:
- 以下出现的第一个入参
boolean condition
表示该条件是否加入最后生成的sql中- 没有标明
condition
的方法,默认为true
- 以下出现的泛型
Param
均为Wrapper
的子类实例(均具有AbstractWrapper
的所有方法)- 以下方法在入参中出现的
R
为泛型,在普通wrapper中是String
,在LambdaWrapper中是函数(例:Entity::getId
,Entity
为实体类,getId
为字段id
的getMethod)- 参数
R column
均表示数据库字段
,而不是实体类数据字段名!!!(字段名是数据库关键字的自己用转义符包裹!)!- 以下举例均为使用普通wrapper,入参为
Map
和List
的均以json
形式表现!- 使用中如果入参的
Map
或者List
为空,则不会加入最后生成的sql中!!!- 有任何疑问就点开源码看,看不懂函数的点击我学习新知识
警告
:
不支持以及不赞成在 RPC 调用中把 Wrapper 进行传输(远程调用)
- wrapper 很重
- 传输 wrapper 可以类比为你的 controller 用 map 接收值(开发一时爽,维护火葬场)
- 正确的 RPC 调用姿势是写一个 DTO 进行传输,被调用方再根据 DTO 执行相应的操作
- 我们拒绝接受任何关于 RPC 传输 Wrapper 报错相关的 issue 甚至 pr
案例table
CREATE TABLE `aaa_bbb_cc` (
`ID` int(10) NOT NULL AUTO_INCREMENT,
`aa_as` varchar(255) DEFAULT NULL,
`ab_AAA` varchar(255) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AaaBbbCc implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
private String aaAs;
@TableField("ab_AAA")
private String abAaa;
}
AbstractWrapper
说明:
QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为
allEq:全部eq(或个别isNull)
allEq(Map<R, V> params)
allEq(Map<R, V> params, boolean null2IsNull)
allEq(boolean condition, Map<R, V> params, boolean null2IsNull)
allEq(BiPredicate<R, V> filter, Map<R, V> params)
allEq(BiPredicate<R, V> filter, Map<R, V> params
最后
以上就是辛勤薯片为你收集整理的mybatis plus条件拼接mybatis plus条件拼接 条件构造器 的全部内容,希望文章能够帮你解决mybatis plus条件拼接mybatis plus条件拼接 条件构造器 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复