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 SharedString |
lastSql |
protected java.util.concurrent.atomic.AtomicInteger |
paramNameSeq
必要度量
|
protected java.util.Map<java.lang.String,java.lang.Object> |
paramNameValuePairs |
protected SharedString |
sqlComment
SQL注释
|
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.Consumer<Children> consumer)
多重嵌套查询条件
|
<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.Consumer<Children> consumer)
AND 嵌套
例: and(i -> i.eq("name", "李白").ne("status", "活着"))
|
Children |
apply(boolean condition,
java.lang.String applySql,
java.lang.Object... value)
拼接 sql
!!
|
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
|
Children |
comment(boolean condition,
java.lang.String comment)
sql 注释(会拼接在 sql 的最后面)
|
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)
拼接 EXISTS ( sql语句 )
!!
|
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() |
T |
getEntity()
实体对象(子类实现)
|
MergeSegments |
getExpression()
获取 MergeSegments
|
java.util.Map<java.lang.String,java.lang.Object> |
getParamNameValuePairs() |
java.lang.String |
getSqlComment() |
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 '值%'
|
protected Children |
likeValue(boolean condition,
R column,
java.lang.Object val,
SqlLike sqlLike)
内部自用
拼接 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.Consumer<Children> consumer)
正常嵌套 不带 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)
拼接 NOT EXISTS ( sql语句 )
!!
|
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.Consumer<Children> consumer)
OR 嵌套
例: or(i -> i.eq("name", "李白").ne("status", "活着"))
|
Children |
orderBy(boolean condition,
boolean isAsc,
R... columns)
排序:ORDER BY 字段, ...
|
Children |
setEntity(T entity) |
getCustomSqlSegment, 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, comment, exists, last, notExists, orgroupBy, groupBy, having, in, in, in, inSql, isNotNull, isNull, notIn, notIn, notIn, notInSql, orderByAsc, orderByAsc, orderByAsc, orderByDesc, orderByDesc, orderByDescprotected final Children extends AbstractWrapper<T,R,Children> typedThis
protected java.util.concurrent.atomic.AtomicInteger paramNameSeq
protected java.util.Map<java.lang.String,java.lang.Object> paramNameValuePairs
protected SharedString lastSql
protected SharedString sqlComment
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.Consumer<Children> consumer)
Nested例: and(i -> i.eq("name", "李白").ne("status", "活着"))
public Children or(boolean condition, java.util.function.Consumer<Children> consumer)
Nested例: or(i -> i.eq("name", "李白").ne("status", "活着"))
public Children nested(boolean condition, java.util.function.Consumer<Children> consumer)
Nested例: nested(i -> i.eq("name", "李白").ne("status", "活着"))
public Children apply(boolean condition, java.lang.String applySql, java.lang.Object... value)
Join!! 会有 sql 注入风险 !!
例1: apply("id = 1")
例2: apply("date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")
例3: apply("date_format(dateColumn,'%Y-%m-%d') = {0}", LocalDate.now())
public Children last(boolean condition, java.lang.String lastSql)
Join例: last("limit 1")
注意只能调用一次,多次调用以最后一次为准
public Children comment(boolean condition, java.lang.String comment)
Joinpublic Children exists(boolean condition, java.lang.String existsSql)
Join!! sql 注入方法 !!
例: exists("select id from table where age = 1")
public Children notExists(boolean condition, java.lang.String notExistsSql)
Join!! sql 注入方法 !!
例: notExists("select id from table where age = 1")
public Children isNull(boolean condition, R column)
Func例: isNull("name")
public Children isNotNull(boolean condition, R column)
Func例: isNotNull("name")
public Children in(boolean condition, R column, java.util.Collection<?> coll)
Func例: in("id", Arrays.asList(1, 2, 3, 4, 5))
public Children notIn(boolean condition, R column, java.util.Collection<?> coll)
Func例: notIn("id", Arrays.asList(1, 2, 3, 4, 5))
public Children inSql(boolean condition, R column, java.lang.String inValue)
Func!! sql 注入方式的 in 方法 !!
例1: inSql("id", "1, 2, 3, 4, 5, 6")
例2: inSql("id", "select id from table where id < 3")
public Children notInSql(boolean condition, R column, java.lang.String inValue)
Func!! sql 注入方式的 not in 方法 !!
例1: notInSql("id", "1, 2, 3, 4, 5, 6")
例2: notInSql("id", "select id from table where id < 3")
public Children groupBy(boolean condition, R... columns)
Func例: groupBy("id", "name")
public Children orderBy(boolean condition, boolean isAsc, R... columns)
Func例: orderBy(true, "id", "name")
public Children having(boolean condition, java.lang.String sqlHaving, java.lang.Object... params)
Func例1: having("sum(age) > 10")
例2: having("sum(age) > {0}", 10)
protected Children not(boolean condition)
NOT 关键词
protected Children and(boolean condition)
拼接 AND
protected Children likeValue(boolean condition, R column, java.lang.Object val, SqlLike sqlLike)
拼接 LIKE 以及 值
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.Consumer<Children> consumer)
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 getSqlSegment()
ISqlSegmentgetSqlSegment 在接口中 ISqlSegmentpublic java.lang.String getSqlComment()
getSqlComment 在类中 Wrapper<T>public MergeSegments getExpression()
WrappergetExpression 在类中 Wrapper<T>public java.util.Map<java.lang.String,java.lang.Object> getParamNameValuePairs()
protected java.lang.String columnToString(R column)
protected java.lang.String columnsToString(R... columns)
columns - 多字段public Children clone()
clone 在类中 java.lang.Object