public abstract class AbstractWrapper<T,R,Children extends AbstractWrapper<T,R,Children>> extends Wrapper<T> implements Compare<Children,R>, Nested<Children,Children>, Join<Children>, Func<Children,R>
查询条件封装
| 限定符和类型 | 字段和说明 |
|---|---|
protected T |
entity
数据库表映射实体类
|
protected java.lang.Class<T> |
entityClass
实体类型
|
protected MergeSegments |
expression |
protected java.lang.String |
lastSql |
protected java.lang.String |
paramAlias |
protected java.util.concurrent.atomic.AtomicInteger |
paramNameSeq
必要度量
|
protected java.util.Map<java.lang.String,java.lang.Object> |
paramNameValuePairs |
protected Children |
typedThis |
| 构造器和说明 |
|---|
AbstractWrapper() |
| 限定符和类型 | 方法和说明 |
|---|---|
protected Children |
addCondition(boolean condition,
R column,
SqlKeyword sqlKeyword,
java.lang.Object val)
普通查询条件
|
protected Children |
addNestedCondition(boolean condition,
java.util.function.Function<Children,Children> func)
多重嵌套查询条件
|
<V> Children |
allEq(boolean condition,
java.util.function.BiPredicate<R,V> filter,
java.util.Map<R,V> params,
boolean null2IsNull)
字段过滤接口,传入多参数时允许对参数进行过滤
|
<V> Children |
allEq(boolean condition,
java.util.Map<R,V> params,
boolean null2IsNull)
map 所有非空属性等于 =
|
protected Children |
and(boolean condition)
内部自用
拼接 AND
|
Children |
and(boolean condition,
java.util.function.Function<Children,Children> func)
AND 嵌套
例: and(i -> i.eq("name", "李白").ne("status", "活着"))
|
Children |
apply(boolean condition,
java.lang.String applySql,
java.lang.Object... value)
!!
|
Children |
between(boolean condition,
R column,
java.lang.Object val1,
java.lang.Object val2)
BETWEEN 值1 AND 值2
|
Children |
clone() |
protected java.lang.String |
columnsToString(R... columns)
多字段转换为逗号 "," 分割字符串
|
protected java.lang.String |
columnToString(R column)
获取 columnName
|
protected Children |
doIt(boolean condition,
ISqlSegment... sqlSegments)
对sql片段进行组装
|
Children |
eq(boolean condition,
R column,
java.lang.Object val)
等于 =
|
Children |
exists(boolean condition,
java.lang.String existsSql)
!!
|
protected java.lang.String |
formatSql(java.lang.String sqlStr,
java.lang.Object... params)
格式化SQL
|
protected java.lang.String |
formatSqlIfNeed(boolean need,
java.lang.String sqlStr,
java.lang.Object... params)
根据需要格式化SQL
Format SQL for methods: EntityQ |
Children |
ge(boolean condition,
R column,
java.lang.Object val)
大于等于 >=
|
protected java.lang.Class<T> |
getCheckEntityClass() |
java.lang.String |
getCustomSqlSegment()
获取自定义SQL 简化自定义XML复杂情况
使用方法
`自定义sql` + ${ew.customSqlSegment}
1.逻辑删除需要自己拼接条件 (之前自定义也同样)
2.不支持wrapper中附带实体的情况 (wrapper自带实体会更麻烦)
3.用法 ${ew.customSqlSegment} (不需要where标签包裹,切记!)
|
T |
getEntity()
实体对象(子类实现)
|
MergeSegments |
getExpression()
获取 MergeSegments
|
java.lang.String |
getParamAlias() |
java.util.Map<java.lang.String,java.lang.Object> |
getParamNameValuePairs() |
java.lang.String |
getSqlSegment()
SQL 片段
|
Children |
groupBy(boolean condition,
R... columns)
分组:GROUP BY 字段, ...
|
Children |
gt(boolean condition,
R column,
java.lang.Object val)
大于 >
|
Children |
having(boolean condition,
java.lang.String sqlHaving,
java.lang.Object... params)
HAVING ( sql语句 )
例1: having("sum(age) > 10")
例2: having("sum(age) > {0}", 10)
|
Children |
in(boolean condition,
R column,
java.util.Collection<?> coll)
字段 IN (value.get(0), value.get(1), ...)
|
protected void |
initEntityClass() |
protected void |
initNeed()
必要的初始化
|
Children |
inSql(boolean condition,
R column,
java.lang.String inValue)
字段 IN ( sql语句 )
!!
|
protected abstract Children |
instance()
子类返回一个自己的新对象
|
Children |
isNotNull(boolean condition,
R column)
字段 IS NOT NULL
例: isNotNull("name")
|
Children |
isNull(boolean condition,
R column)
字段 IS NULL
例: isNull("name")
|
Children |
last(boolean condition,
java.lang.String lastSql)
无视优化规则直接拼接到 sql 的最后(有sql注入的风险,请谨慎使用)
例: last("limit 1")
注意只能调用一次,多次调用以最后一次为准
|
Children |
le(boolean condition,
R column,
java.lang.Object val)
小于等于 <=
|
Children |
like(boolean condition,
R column,
java.lang.Object val)
LIKE '%值%'
|
Children |
likeLeft(boolean condition,
R column,
java.lang.Object val)
LIKE '%值'
|
Children |
likeRight(boolean condition,
R column,
java.lang.Object val)
LIKE '值%'
|
Children |
lt(boolean condition,
R column,
java.lang.Object val)
小于 <
|
Children |
ne(boolean condition,
R column,
java.lang.Object val)
不等于 <>
|
Children |
nested(boolean condition,
java.util.function.Function<Children,Children> func)
正常嵌套 不带 AND 或者 OR
例: nested(i -> i.eq("name", "李白").ne("status", "活着"))
|
protected Children |
not(boolean condition)
内部自用
NOT 关键词
|
Children |
notBetween(boolean condition,
R column,
java.lang.Object val1,
java.lang.Object val2)
NOT BETWEEN 值1 AND 值2
|
Children |
notExists(boolean condition,
java.lang.String notExistsSql)
!!
|
Children |
notIn(boolean condition,
R column,
java.util.Collection<?> coll)
字段 NOT IN (value.get(0), value.get(1), ...)
|
Children |
notInSql(boolean condition,
R column,
java.lang.String inValue)
字段 NOT IN ( sql语句 )
!!
|
Children |
notLike(boolean condition,
R column,
java.lang.Object val)
NOT LIKE '%值%'
|
Children |
or(boolean condition)
拼接 OR
|
Children |
or(boolean condition,
java.util.function.Function<Children,Children> func)
OR 嵌套
例: or(i -> i.eq("name", "李白").ne("status", "活着"))
|
Children |
orderBy(boolean condition,
boolean isAsc,
R... columns)
排序:ORDER BY 字段, ...
|
Children |
setEntity(T entity) |
getSqlSelect, getSqlSet, isEmptyOfEntity, isEmptyOfNormal, isEmptyOfWhere, nonEmptyOfEntity, nonEmptyOfNormal, nonEmptyOfWhereequals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitallEq, allEq, allEq, allEq, between, eq, ge, gt, le, like, likeLeft, likeRight, lt, ne, notBetween, notLikeapply, exists, last, notExists, orgroupBy, having, in, in, in, inOrThrow, inOrThrow, inOrThrow, inOrThrow, inSql, isNotNull, isNull, notIn, notIn, notIn, notInOrThrow, notInOrThrow, notInOrThrow, notInOrThrow, notInSql, orderByAsc, orderByAsc, orderByDesc, orderByDescprotected final Children extends AbstractWrapper<T,R,Children> typedThis
protected final java.lang.String paramAlias
protected java.util.concurrent.atomic.AtomicInteger paramNameSeq
protected java.util.Map<java.lang.String,java.lang.Object> paramNameValuePairs
protected java.lang.String lastSql
protected T entity
protected MergeSegments expression
protected java.lang.Class<T> entityClass
protected void initEntityClass()
protected java.lang.Class<T> getCheckEntityClass()
public <V> Children allEq(boolean condition, java.util.Map<R,V> params, boolean null2IsNull)
Comparepublic <V> Children allEq(boolean condition, java.util.function.BiPredicate<R,V> filter, java.util.Map<R,V> params, boolean null2IsNull)
Comparepublic Children like(boolean condition, R column, java.lang.Object val)
Comparepublic Children notLike(boolean condition, R column, java.lang.Object val)
Comparepublic Children likeLeft(boolean condition, R column, java.lang.Object val)
Comparepublic Children likeRight(boolean condition, R column, java.lang.Object val)
Comparepublic Children between(boolean condition, R column, java.lang.Object val1, java.lang.Object val2)
Comparepublic Children notBetween(boolean condition, R column, java.lang.Object val1, java.lang.Object val2)
ComparenotBetween 在接口中 Compare<Children extends AbstractWrapper<T,R,Children>,R>condition - 执行条件column - 字段val1 - 值1val2 - 值2public Children and(boolean condition, java.util.function.Function<Children,Children> func)
Nestedpublic Children or(boolean condition, java.util.function.Function<Children,Children> func)
Nestedpublic Children nested(boolean condition, java.util.function.Function<Children,Children> func)
Nestedpublic Children apply(boolean condition, java.lang.String applySql, java.lang.Object... value)
Joinpublic Children last(boolean condition, java.lang.String lastSql)
Joinpublic Children exists(boolean condition, java.lang.String existsSql)
Joinpublic Children notExists(boolean condition, java.lang.String notExistsSql)
Joinpublic Children isNull(boolean condition, R column)
Funcpublic Children isNotNull(boolean condition, R column)
Funcpublic Children in(boolean condition, R column, java.util.Collection<?> coll)
Funcpublic Children notIn(boolean condition, R column, java.util.Collection<?> coll)
Funcpublic Children inSql(boolean condition, R column, java.lang.String inValue)
Funcpublic Children notInSql(boolean condition, R column, java.lang.String inValue)
Funcpublic Children groupBy(boolean condition, R... columns)
Funcpublic Children orderBy(boolean condition, boolean isAsc, R... columns)
Funcpublic Children having(boolean condition, java.lang.String sqlHaving, java.lang.Object... params)
Funcprotected Children not(boolean condition)
NOT 关键词
protected Children and(boolean condition)
拼接 AND
protected Children addCondition(boolean condition, R column, SqlKeyword sqlKeyword, java.lang.Object val)
condition - 是否执行column - 属性sqlKeyword - SQL 关键词val - 条件值protected Children addNestedCondition(boolean condition, java.util.function.Function<Children,Children> func)
condition - 查询条件值protected abstract Children instance()
protected final java.lang.String formatSql(java.lang.String sqlStr,
java.lang.Object... params)
sqlStr - SQL语句部分params - 参数集protected final java.lang.String formatSqlIfNeed(boolean need,
java.lang.String sqlStr,
java.lang.Object... params)
根据需要格式化SQL
Format SQL for methods: EntityQ
ew.where("sample_name={0}", "haha").and("sample_age >{0}
and sample_age<{1}", 18, 30) TO
sample_name=#{MPGENVAL1} and sample_age>#{MPGENVAL2} and
sample_age<#{MPGENVAL3}
need - 是否需要格式化sqlStr - SQL语句部分params - 参数集protected final void initNeed()
protected Children doIt(boolean condition, ISqlSegment... sqlSegments)
condition - 是否执行sqlSegments - sql片段数组public java.lang.String getParamAlias()
public java.lang.String getSqlSegment()
ISqlSegmentgetSqlSegment 在接口中 ISqlSegmentpublic java.lang.String getCustomSqlSegment()
Wrapper1.逻辑删除需要自己拼接条件 (之前自定义也同样)
2.不支持wrapper中附带实体的情况 (wrapper自带实体会更麻烦)
3.用法 ${ew.customSqlSegment} (不需要where标签包裹,切记!)>
4.ew是wrapper定义别名,可自行替换>
getCustomSqlSegment 在类中 Wrapper<T>public MergeSegments getExpression()
WrappergetExpression 在类中 Wrapper<T>public java.util.Map<java.lang.String,java.lang.Object> getParamNameValuePairs()
protected java.lang.String columnsToString(R... columns)
columns - 多字段protected java.lang.String columnToString(R column)
public Children clone()
clone 在类中 java.lang.Object