wapper介绍:
用于条件封装,生成 sql 的 where 条件
|--Wrapper : 条件构造抽象类,最顶端父类 |--AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 |--QueryWrapper : 查询条件封装 |--UpdateWrapper : Update 条件封装 |--AbstractLambdaWrapper : 使用Lambda 语法 |--LambdaQueryWrapper :用于Lambda语法使用的查询Wrapper |--LambdaUpdateWrapper : Lambda 更新封装Wrapper
关键字段描述:
AbstractWrapper类:
allEq
描述使用说明:全部等于 或 个别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, boolean null2IsNull) allEq(boolean condition, BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull)
参数说明:
类型 | 参数名 | 描述 |
Map<R,V> | params |
Key:数据库字段名 |
boolean | null2IsNull |
值为true,则map的value为null时调用isNull方法, 值为false,则忽略value为null |
BiPredicate<R,V> | filter | 过滤函数,是否允许字段传入比对条件中 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
allEq({id:1,name:"老王",age:null}) | id = 1 and name = '老王' and age is null |
allEq({id:1,name:"老王",age:null}, false) | id = 1 and name = '老王' |
allEq((k,v) -> k.contains("a"), {id:1,name:"老王",age:null}) | name = '老王' and age is null |
allEq((k,v) -> k.contains("a"), {id:1,name:"老王",age:null}, false) | name = '老王' |
eq
描述使用说明:等于号=
eq(R column, Object val) eq(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
eq("name", "老王") | name = '老王' |
ne
描述使用说明:不等于号 <>
ne(R column, Object val) ne(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
ne("name", "老王") | name <> '老王' |
gt
描述使用说明:大于号 >
gt(R column, Object val) gt(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
gt("age", 18) | age > 18 |
ge
描述使用说明:大于等于号 >=
ge(R column, Object val) ge(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
ge("age", 18) | age >= 18 |
lt
描述使用说明:小于号 <
lt(R column, Object val) lt(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
lt("age", 18) | age < 18 |
le
描述使用说明:小于等于号 <=
le(R column, Object val) le(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
le("age", 18) | age <= 18 |
between
描述使用说明: between 值1 AND 值2
between(R column, Object val1, Object val2) between(boolean condition, R column, Object val1, Object val2)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
between("age", 18, 30) | age between 18 and 30 |
notBetween
描述使用说明:not between 值1 AND 值2
notBetween(R column, Object val1, Object val2) notBetween(boolean condition, R column, Object val1, Object val2)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
notBetween("age", 18, 30) | age not between 18 and 30 |
like
描述使用说明:LIKE '%值%'
like(R column, Object val) like(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
like("name", "王") | name like '%王%' |
notLike
描述使用说明:NOT LIKE '%值%'
notLike(R column, Object val) notLike(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
notLike("name", "王") | name not like '%王%' |
likeLeft
描述使用说明:LIKE '%值'
likeLeft(R column, Object val) likeLeft(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
likeLeft("name", "王") | name like '%王' |
likeRight
描述使用说明:LIKE '值%'
likeRight(R column, Object val) likeRight(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
likeRight("name", "王") | name like '王%' |
notLikeLeft
描述使用说明:NOT LIKE '%值'
notLikeLeft(R column, Object val) notLikeLeft(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
notLikeLeft("name", "王") | name not like '%王' |
notLikeRight
描述使用说明:NOT LIKE '值%'
notLikeRight(R column, Object val) notLikeRight(boolean condition, R column, Object val)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Object | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
notLikeRight("name", "王") | name not like '王%' |
isNull
描述使用说明:字段名 IS NULL
isNull(R column) isNull(boolean condition, R column)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
isNull("name") | name is null |
isNotNull
描述使用说明:字段名 IS NOT NULL
isNotNull(R column) isNotNull(boolean condition, R column)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
isNotNull("name") | name is not null |
in
in(R column, Collection<?> value) in(boolean condition, R column, Collection<?> value)
描述使用说明:字段 IN (value.get(0), value.get(1), ...)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Collection<?> | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
in("age",{1,2,3}) | age in (1,2,3) |
in(R column, Object... values) in(boolean condition, R column, Object... values)
描述使用说明:字段 IN (v0, v1, ...)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Collection<?> | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
in("age", 1, 2, 3) | age in (1,2,3) |
notIn
notIn(R column, Collection<?> value) notIn(boolean condition, R column, Collection<?> value)
描述使用说明:字段 NOT IN (value.get(0), value.get(1), ...)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Collection<?> | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
notIn("age",{1,2,3}) | age not in (1,2,3) |
notIn(R column, Object... values) notIn(boolean condition, R column, Object... values)
描述使用说明:字段 NOT IN (v0, v1, ...)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
Collection<?> | val | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
notIn("age", 1, 2, 3) | age not in (1,2,3) |
inSql
描述使用说明:字段 IN ( sql语句 )
inSql(R column, String inValue) inSql(boolean condition, R column, String inValue)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
String | inValus | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
inSql("age", "1,2,3,4,5,6") | age in (1,2,3,4,5,6) |
inSql("id", "select id from table where id < 3") | id in (select id from table where id < 3) |
notInSql
描述使用说明:字段 NOT IN ( sql语句 )
notInSql(R column, String inValue) notInSql(boolean condition, R column, String inValue)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
String | inValus | 赋值 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
notInSql("age", "1,2,3,4,5,6") | age not in (1,2,3,4,5,6) |
notInSql("id", "select id from table where id < 3") | id not in (select id from table where id < 3) |
groupBy
描述使用说明:分组:GROUP BY 字段, ...
groupBy(R... columns) groupBy(boolean condition, R... columns)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
groupBy("id", "name") | group by id,name |
orderByAsc
描述使用说明:排序:ORDER BY 字段, ... ASC
orderByAsc(R... columns) orderByAsc(boolean condition, R... columns)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
orderByAsc("id", "name") | order by id ASC,name ASC |
orderByDesc
描述使用说明:排序:ORDER BY 字段, ... DESC
orderByDesc(R... columns) orderByDesc(boolean condition, R... columns)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名数组 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
orderByDesc("id", "name") | order by id DESC,name DESC |
orderBy
描述使用说明:排序:ORDER BY 字段, ...
orderBy(boolean condition, boolean isAsc, R... columns)
参数说明:
类型 | 参数名 | 描述 |
R | column | 数据库字段名 |
boolean | isAsc | asc 升序 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
orderBy(true, true, "id", "name") | order by id ASC,name ASC |
having
描述使用说明:HAVING ( sql语句 )
having(String sqlHaving, Object... params) having(boolean condition, String sqlHaving, Object... params)
参数说明:
类型 | 参数名 | 描述 |
String | sqlHaving | sql语句 |
Obiect | params | 参数数组 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
having("sum(age) > 10") | having sum(age) > 10 |
having("sum(age) > {0}", 11) | having sum(age) > 11 |
func
描述使用说明:func 方法(主要方便在出现if...else下调用不同方法能不断链)
func(Consumer<Children> consumer) func(boolean condition, Consumer<Children> consumer)
参数说明:
类型 | 参数名 | 描述 |
Consumer<Children> | consumer | 消费函数 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 |
func(i -> if(true) { i.eq("id", 1) }else { i.ne("id", 1) } ) |
or
1、拼接 OR
注意事项:
主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)
or() or(boolean condition)
案例:
java代码 | 对应SQL |
eq("id",1).or().eq("name","老王") | id = 1 or name = '老王' |
2、OR 嵌套
or(Consumer<Param> consumer) or(boolean condition, Consumer<Param> consumer)
参数说明:
类型 | 参数名 | 描述 |
Consumer<Children> | consumer | 消费函数 |
boolean | condition | 表示该条件是否加入最后生成的sql中 |
案例:
java代码 | 对应SQL |
or(i -> i.eq("name", "李白").ne("status", "活着")) | or (name = '李白' and status <> '活着') |
and
描述使用说明:AND 嵌套
and(Consumer<Param> consumer) and(boolean condition, Consumer<Param> consumer)
案例:
java代码 | 对应SQL |
and(i -> i.eq("name", "李白").ne("status", "活着")) | and (name = '李白' and status <> '活着') |
nested
描述使用说明:正常嵌套 不带 AND 或者 OR
nested(Consumer<Param> consumer) nested(boolean condition, Consumer<Param> consumer)
案例:
java代码 | 对应SQL |
nested(i -> i.eq("name", "李白").ne("status", "活着")) | (name = '李白' and status <> '活着') |
apply
描述使用说明:拼接 sql
注意事项
该方法可用于数据库函数 动态入参的params对应前面applySql内部的{index}部分.这样是不会有sql注入风险的,反之会有!
apply(String applySql, Object... params) apply(boolean condition, String applySql, Object... params)
案例:
java代码 | 对应SQL |
apply("id = 1") | id = 1 |
apply("date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'") | date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'") |
apply("date_format(dateColumn,'%Y-%m-%d') = {0}", "2008-08-08") | date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'") |
last
描述使用说明:无视优化规则直接拼接到 sql 的最后
注意事项:
能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用
last(String lastSql) last(boolean condition, String lastSql)
案例:
java代码 |
last("limit 1") |
exists
描述使用说明:拼接 EXISTS ( sql语句 )
exists(String existsSql) exists(boolean condition, String existsSql)
案例:
java代码 | 对应SQL |
exists("select id from table where age = 1") | exists (select id from table where age = 1) |
notExists
描述使用说明:拼接 NOT EXISTS ( sql语句 )
notExists(String notExistsSql) notExists(boolean condition, String notExistsSql)
案例:
java代码 | 对应SQL |
notExists("select id from table where age = 1") | not exists (select id from table where age = 1) |
QueryWrapper类:
说明:
继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取
select
描述使用说明:设置查询字段
select(String... sqlSelect) select(Predicate<TableFieldInfo> predicate)
select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
说明:
以上方法分为两类,第二类方法为:过滤查询字段(主键除外),入参不包含 class 的调用前需要wrapper内的entity属性有值! 这两类方法重复调用以最后一次为准
案例:
java代码 |
select("id", "name", "age") |
select(i -> i.getProperty().startsWith("test")) |
UpdateWrapper类
说明:
继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!
set
描述使用说明:SQL SET 字段
set(String column, Object val) set(boolean condition, String column, Object val)
案例:
java代码 | 对应SQL |
set("name", "老李头") | |
set("name", "") | 数据库字段值变为空字符串 |
set("name", null) | 数据库字段值变为null |
setSql
描述使用说明:设置 SET 部分 SQL
setSql(String sql)
案例:
java代码 |
setSql("name = '老李头'") |
lambda
描述使用说明:获取 LambdaWrapper
在QueryWrapper中是获取LambdaQueryWrapper
在UpdateWrapper中是获取LambdaUpdateWrapper
标签:MybatisPlus,name,val,column,Object,构造,boolean,条件,condition From: https://www.cnblogs.com/Life-QX/p/17204729.html