public abstract class Wrapper<T> extends Object implements Serializable
条件构造抽象类,定义T-SQL语法
| 限定符和类型 | 字段和说明 |
|---|---|
protected String |
AND_OR
拼接WHERE后应该是AND还是OR
|
protected Boolean |
isWhere
自定义是否输出sql为 WHERE OR AND OR OR
|
protected String |
paramAlias |
protected SqlPlus |
sql
实现了TSQL语法的SQL实体
|
protected String |
sqlSelect
SQL 查询字段内容,例如:id,name,age
|
| 构造器和说明 |
|---|
Wrapper() |
| 限定符和类型 | 方法和说明 |
|---|---|
Wrapper<T> |
addFilter(String sqlWhere,
Object... params)
为了兼容之前的版本,可使用where()或and()替代
|
Wrapper<T> |
addFilterIfNeed(boolean need,
String sqlWhere,
Object... params)
根据判断条件来添加条件语句部分 使用 andIf() 替代
eg: ew.filterIfNeed(false,"name='zhangsan'").where("name='zhangsan'")
.filterIfNeed(true,"id={0}",22)
输出: WHERE (name='zhangsan' AND id=22)
|
Wrapper<T> |
allEq(Map<String,Object> params)
等同于SQL的"field=value"表达式
|
Wrapper<T> |
and()
使用AND连接并换行
|
Wrapper<T> |
and(String sqlAnd,
Object... params)
AND 连接后续条件
|
Wrapper<T> |
andNew(String sqlAnd,
Object... params)
使用AND连接并换行
eg: ew.where("name='zhangsan'").and("id=11").andNew("statu=1"); 输出: WHERE
(name='zhangsan' AND id=11) AND (statu=1)
|
Wrapper<T> |
between(String column,
Object val1,
Object val2)
betwwee 条件语句
|
Wrapper<T> |
eq(String column,
Object params)
等同于SQL的"field=value"表达式
|
Wrapper<T> |
exists(String value)
EXISTS 条件语句,目前适配mysql及oracle
|
protected String |
formatSql(String sqlStr,
Object... params)
格式化SQL
|
protected String |
formatSqlIfNeed(boolean need,
String sqlStr,
Object... params)
根据需要格式化SQL
Format SQL for methods: EntityWrapper.where/and/or... |
Wrapper<T> |
ge(String column,
Object params)
等同于SQL的"field>=value"表达式
|
T |
getEntity()
兼容EntityWrapper
|
String |
getParamAlias() |
Map<String,Object> |
getParamNameValuePairs()
Fix issue 200.
|
abstract String |
getSqlSegment()
SQL 片段 (子类实现)
|
String |
getSqlSelect() |
Wrapper<T> |
groupBy(String columns)
SQL中groupBy关键字跟的条件语句
eg: ew.where("name='zhangsan'").groupBy("id,name")
|
Wrapper<T> |
gt(String column,
Object params)
等同于SQL的"field>value"表达式
|
Wrapper<T> |
having(String sqlHaving,
Object... params)
SQL中having关键字跟的条件语句
eg: ew.groupBy("id,name").having("id={0}",22).and("password is not null")
|
Wrapper<T> |
in(String column,
Collection<?> value)
IN 条件语句,目前适配mysql及oracle
|
Wrapper<T> |
in(String column,
Object[] value)
IN 条件语句,目前适配mysql及oracle
|
Wrapper<T> |
in(String column,
String value)
IN 条件语句,目前适配mysql及oracle
|
Wrapper<T> |
isNotNull(String columns)
is not null 条件
|
Wrapper<T> |
isNull(String columns)
is not null 条件
|
Wrapper<T> |
isWhere(Boolean bool)
自定义是否输出sql开头为 `WHERE` OR `AND` OR `OR`
|
Wrapper<T> |
last(String limit)
手动把sql拼接到最后(有sql注入的风险,请谨慎使用)
|
Wrapper<T> |
le(String column,
Object params)
等同于SQL的"field<=value"表达式
|
Wrapper<T> |
like(String column,
String value)
LIKE条件语句,value中无需前后%
|
Wrapper<T> |
like(String column,
String value,
SqlLike type)
LIKE条件语句,value中无需前后%
|
Wrapper<T> |
lt(String column,
Object params)
等同于SQL的"field |
Wrapper<T> |
ne(String column,
Object params)
等同于SQL的"field <> value"表达式
|
Wrapper<T> |
notBetween(String column,
Object val1,
Object val2)
NOT betwwee 条件语句
|
Wrapper<T> |
notExists(String value)
NOT EXISTS条件语句
|
Wrapper<T> |
notIn(String column,
Collection<?> value)
NOT IN 条件语句,目前适配mysql及oracle
|
Wrapper<T> |
notIn(String column,
Object... value)
NOT IN 条件语句,目前适配mysql及oracle
|
Wrapper<T> |
notIn(String column,
String value)
NOT IN条件语句
|
Wrapper<T> |
notLike(String column,
String value)
NOT LIKE条件语句,value中无需前后%
|
Wrapper<T> |
notLike(String column,
String value,
SqlLike type)
NOT LIKE条件语句,value中无需前后%
|
Wrapper<T> |
or()
使用OR连接并换行
|
Wrapper<T> |
or(String sqlOr,
Object... params)
添加OR条件
|
Wrapper<T> |
orderBy(String columns)
SQL中orderby关键字跟的条件语句
eg: ew.groupBy("id,name").having("id={0}",22).and("password is not null"
).orderBy("id,name")
|
Wrapper<T> |
orderBy(String columns,
boolean isAsc)
SQL中orderby关键字跟的条件语句,可根据变更动态排序
|
Wrapper<T> |
orNew(String sqlOr,
Object... params)
使用OR换行,并添加一个带()的新的条件
eg: ew.where("name='zhangsan'").and("id=11").orNew("statu=1"); 输出: WHERE
(name='zhangsan' AND id=11) OR (statu=1)
|
Wrapper<T> |
setParamAlias(String paramAlias)
调用该方法时 应当在吃初始化时优先设置该值 不要重复设置该值 要不然我就给你抛异常了
|
Wrapper<T> |
setSqlSelect(Column... column)
使用对象封装的setsqlselect
|
Wrapper<T> |
setSqlSelect(String sqlSelect) |
protected String |
stripSqlInjection(String value)
SQL注入内容剥离
|
String |
toString() |
Wrapper<T> |
where(String sqlWhere,
Object... params)
SQL中WHERE关键字跟的条件语句
eg: ew.where("name='zhangsan'").where("id={0}","123");
输出: WHERE (NAME='zhangsan' AND id=123)
|
protected final SqlPlus sql
protected String paramAlias
protected String sqlSelect
protected Boolean isWhere
protected String AND_OR
public T getEntity()
public String getSqlSelect()
public abstract String getSqlSegment()
public Wrapper<T> where(String sqlWhere, Object... params)
SQL中WHERE关键字跟的条件语句
eg: ew.where("name='zhangsan'").where("id={0}","123");
输出: WHERE (NAME='zhangsan' AND id=123)
sqlWhere - where语句params - 参数集public Wrapper<T> eq(String column, Object params)
等同于SQL的"field=value"表达式
column - params - public Wrapper<T> ne(String column, Object params)
等同于SQL的"field <> value"表达式
column - params - public Wrapper<T> gt(String column, Object params)
等同于SQL的"field>value"表达式
column - params - public Wrapper<T> ge(String column, Object params)
等同于SQL的"field>=value"表达式
column - params - public Wrapper<T> le(String column, Object params)
等同于SQL的"field<=value"表达式
column - params - public Wrapper<T> and(String sqlAnd, Object... params)
AND 连接后续条件
sqlAnd - and条件语句params - 参数集public Wrapper<T> andNew(String sqlAnd, Object... params)
使用AND连接并换行
eg: ew.where("name='zhangsan'").and("id=11").andNew("statu=1"); 输出: WHERE (name='zhangsan' AND id=11) AND (statu=1)
sqlAnd - AND 条件语句params - 参数值public Wrapper<T> or(String sqlOr, Object... params)
添加OR条件
sqlOr - or 条件语句params - 参数集public Wrapper<T> orNew(String sqlOr, Object... params)
使用OR换行,并添加一个带()的新的条件
eg: ew.where("name='zhangsan'").and("id=11").orNew("statu=1"); 输出: WHERE (name='zhangsan' AND id=11) OR (statu=1)
sqlOr - AND 条件语句params - 参数值public Wrapper<T> groupBy(String columns)
SQL中groupBy关键字跟的条件语句
eg: ew.where("name='zhangsan'").groupBy("id,name")
columns - SQL 中的 Group by 语句,无需输入 Group By 关键字public Wrapper<T> having(String sqlHaving, Object... params)
SQL中having关键字跟的条件语句
eg: ew.groupBy("id,name").having("id={0}",22).and("password is not null")
sqlHaving - having关键字后面跟随的语句params - 参数集public Wrapper<T> orderBy(String columns)
SQL中orderby关键字跟的条件语句
eg: ew.groupBy("id,name").having("id={0}",22).and("password is not null" ).orderBy("id,name")
columns - SQL 中的 order by 语句,无需输入 Order By 关键字public Wrapper<T> orderBy(String columns, boolean isAsc)
SQL中orderby关键字跟的条件语句,可根据变更动态排序
columns - SQL 中的 order by 语句,无需输入 Order By 关键字isAsc - 是否为升序public Wrapper<T> like(String column, String value)
column - 字段名称value - 匹配值public Wrapper<T> notLike(String column, String value)
column - 字段名称value - 匹配值public Wrapper<T> like(String column, String value, SqlLike type)
column - 字段名称value - 匹配值type - public Wrapper<T> notLike(String column, String value, SqlLike type)
column - 字段名称value - 匹配值type - public Wrapper<T> isNotNull(String columns)
columns - 字段名称。多个字段以逗号分隔。public Wrapper<T> in(String column, String value)
column - 字段名称value - 逗号拼接的字符串public Wrapper<T> notIn(String column, String value)
column - 字段名称value - 逗号拼接的字符串public Wrapper<T> in(String column, Collection<?> value)
column - 字段名称value - 匹配值 List集合public Wrapper<T> notIn(String column, Collection<?> value)
column - 字段名称value - 匹配值 List集合public Wrapper<T> in(String column, Object[] value)
column - 字段名称value - 匹配值 object数组public Wrapper<T> notIn(String column, Object... value)
column - 字段名称value - 匹配值 object数组public Wrapper<T> between(String column, Object val1, Object val2)
column - 字段名称val1 - val2 - public Wrapper<T> notBetween(String column, Object val1, Object val2)
column - 字段名称val1 - val2 - public Wrapper<T> addFilter(String sqlWhere, Object... params)
sqlWhere - where sql部分params - 参数集public Wrapper<T> addFilterIfNeed(boolean need, String sqlWhere, Object... params)
根据判断条件来添加条件语句部分 使用 andIf() 替代
eg: ew.filterIfNeed(false,"name='zhangsan'").where("name='zhangsan'") .filterIfNeed(true,"id={0}",22)
输出: WHERE (name='zhangsan' AND id=22)
need - 是否需要添加该条件sqlWhere - 条件语句params - 参数集protected String stripSqlInjection(String value)
SQL注入内容剥离
value - 待处理内容protected String formatSql(String sqlStr, Object... params)
格式化SQL
sqlStr - SQL语句部分params - 参数集protected String formatSqlIfNeed(boolean need, String sqlStr, Object... params)
根据需要格式化SQL
Format SQL for methods: EntityWrapper.where/and/or...("name={0}", value);
ALL the {i} will be replaced with #{MPGENVALi}
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 - 参数集public Wrapper<T> isWhere(Boolean bool)
自定义是否输出sql开头为 `WHERE` OR `AND` OR `OR`
bool - public Map<String,Object> getParamNameValuePairs()
public String getParamAlias()
Copyright © 2017. All rights reserved.