public class SqlParam extends Object implements Serializable
【警告】请勿让条件组互相引用形成循环引用,否则会出现问题!同时本类也是只可增不可减的
每一个本类对象都是一个条件组,多个条件组可以使用 orNext(SqlParam) 和 andNext(SqlParam) 方法串联起来,类似于链表,他们之间的分隔符是由你连接时调用的方法决定的。
1、如果一个条件组对象的条件有A、B,另一个条件组的条件是C、D,两个条件组内部都是and连接,两个条件组则是or连接,那么最终生成的where条件是: (A and B) or (C and D)
【例1】SqlParam.and().eq("x","x").orNext(SqlParam.and().eq("y","y"))【例1结果】 (x = 'x') or (y = 'y') 【例2】SqlParam.and().eq("x","x").ne("z","z").orNext(SqlParam.and().eq("y","y"))【例2结果】 (x = 'x' and z != 'z') or (y = 'y')
2、整个SqlParam就是一个链表,在任意节点中执行 orNext(SqlParam) 或 andNext(SqlParam) 方法,都会在链表最后添加增加节点,而不会改变当前节点的next属性。
【例3】
SqlParam s1 = SqlParam.and().eq("x","x");
SqlParam s2 = SqlParam.and().ne("y","y");
s1.andNext(s2);
s1.orNext(SqlParam.and().eq("z","z"))
【例3结果】
(x = 'x') and (y != 'y') or (z = 'z')
3、如果你实例化了一个空的本类对象例如直接:SqlParam.and(); SqlParam.or(); 那么实际上是不会产生任何where条件的。
本类是线程不安全的。 同时本类支持序列化和RPC传输,但是请务必保证设置的value值也是可序列化的。
| 限定符和类型 | 方法和说明 |
|---|---|
static SqlParam |
and()
取得一个内部条件全是用and连接的条件组对象.
|
SqlParam |
andNext(SqlParam sqlParam)
和另外一个条件组建立and连接运算.
|
<T extends Serializable> |
betweenAnd(String column,
T start,
T end)
添加一个BETWEEN AND判断规则
|
static SqlParam |
buildByParamModeAnd(Object obj)
用and连接符连接条件,解析对象属性中的
ParamMode注解,并生成一个SqlParam类对象 |
static SqlParam |
buildByParamModeOr(Object obj)
用or连接符连接条件,解析对象属性中的
ParamMode注解,并生成一个SqlParam类对象 |
SqlParam |
eq(String column,
Object value)
添加一个等值判断规则
|
SqlParam |
ge(String column,
Object value)
添加一个大于等于
>=判断规则 |
int |
getCurrentParamSize()
取得当前条件组的条件数量.
|
protected String |
getCurrentSql(Map<String,Object> param,
NameGenerator ng,
com.gframework.sqlparam.StringWrapper stringWrapper)
取得当前SqlParam节点的sql语句,不含左右括号
|
String |
getInnerOp()
取得本条件组内部的连接符号
|
String |
getOuterOp()
取得本条件和上一个条件组之间的连接符号,如果此条件组是首个,则为null.
|
List<SqlParam> |
getParamList()
取得条件组集合链表,包括所有关联的条件组.
|
protected List<Param> |
getParams()
取得当前条件组中的所有条件参数集合
|
int |
getParamSize()
取得从当前节点开始的所有条件数量.
|
String |
getSql(List<Object> params)
取得where子句的sql语句(不含where,左右无括号),同时将其中包含的动态参数设置到params中.
|
String |
getSql(Map<String,Object> params)
取得where子句的sql语句(不含where,左右无括号),同时将其中包含的动态参数设置到params中.
|
String |
getSql(Map<String,Object> params,
NameGenerator ng)
取得where子句的sql语句(不含where,左右无括号),同时将其中包含的动态参数设置到params中.
|
SqlParam |
gt(String column,
Object value)
添加一个大于
>判断规则 |
SqlParam |
in(String column,
Collection<?> values)
添加一个IN判断规则
|
SqlParam |
in(String column,
Object[] values)
添加一个IN判断规则
|
SqlParam |
isNotNull(String column)
添加一个IS NOT NULL判断规则
|
SqlParam |
isNull(String column)
添加一个IS NULL判断规则
|
SqlParam |
le(String column,
Object value)
添加一个小于等于
<=判断规则 |
SqlParam |
like(String column,
String value)
添加一个LIKE判断规则
|
SqlParam |
lt(String column,
Object value)
添加一个小于
<判断规则 |
SqlParam |
ne(String column,
Object value)
添加一个不等判断规则
|
SqlParam |
notIn(String column,
Collection<?> values)
添加一个NOT IN判断规则
|
SqlParam |
notIn(String column,
Object[] values)
添加一个NOT IN判断规则
|
SqlParam |
notLike(String column,
String value)
添加一个NOT LIKE判断规则
|
static SqlParam |
or()
取得一个内部条件全是用or连接的条件组对象.
|
SqlParam |
orNext(SqlParam sqlParam)
和另外一个条件组建立or连接运算.
|
static <T extends Serializable> |
sbetweenAnd(String column,
T start,
T end)
获取一个BETWEEN AND判断规则
|
static Param |
seq(String column,
Object value)
获取一个等值判断规则
|
static Param |
sge(String column,
Object value)
获取一个大于等于
>=判断规则 |
static Param |
sgt(String column,
Object value)
获取一个大于
>判断规则 |
static Param |
sin(String column,
Collection<?> values)
获取一个IN判断规则
|
static Param |
sin(String column,
Object[] values)
获取一个IN判断规则
|
static Param |
sisNotNull(String column)
获取一个IS NOT NULL判断规则
|
static Param |
sisNull(String column)
获取一个IS NULL判断规则
|
static Param |
sle(String column,
Object value)
获取一个小于等于
<=判断规则 |
static Param |
slike(String column,
String value)
获取一个LIKE判断规则
|
static Param |
slt(String column,
Object value)
获取一个小于
<判断规则 |
static Param |
sne(String column,
Object value)
获取一个不等判断规则
|
static Param |
snotIn(String column,
Collection<?> values)
获取一个NOT IN判断规则
|
static Param |
snotIn(String column,
Object[] values)
获取一个NOT IN判断规则
|
static Param |
snotLike(String column,
String value)
获取一个NOT LIKE判断规则
|
String |
toString() |
protected SqlParam(String innerOp)
public static SqlParam buildByParamModeAnd(@Nullable Object obj)
ParamMode注解,并生成一个SqlParam类对象obj - 参数信息存放对象,只有包含了ParamMode注解的属性和方法才会被解析,可为nullpublic static SqlParam buildByParamModeOr(Object obj)
ParamMode注解,并生成一个SqlParam类对象obj - 参数信息存放对象,只有包含了ParamMode注解的属性和方法才会被解析,可为nullpublic static SqlParam and()
public static SqlParam or()
public List<SqlParam> getParamList()
链表的首个节点是当前节点,如果当前节点存在上个节点,则无法取得。 没有任何条件的条件组也不会存在在返回的链表中。
public SqlParam andNext(@Nullable SqlParam sqlParam)
如果已经连接了一个条件组,则会放到整个条件链表的最后面去
sqlParam - 要建立运算的另一个条件组,如果为null则什么都不做并返回nullpublic SqlParam orNext(SqlParam sqlParam)
如果已经连接了一个条件组,则会放到整个条件链表的最后面去
sqlParam - 要建立运算的另一个条件组,如果为null则什么都不做并返回nullpublic int getCurrentParamSize()
如果要取得从当前节点开始的所有条件总数,可以调用getParamSize()方法。
public int getParamSize()
public String getSql(@Nullable Map<String,Object> params, NameGenerator ng)
此方法会生成基于mybatis类型的,采用自定义预编译参数名称的方式进行生成。
params可以为null,为null则不设置参数只生成sql语句。
如果无sql则返回null
params - 保存预编译参数的集合,可以为null唯一的参数名称生成器 - public String getSql(@Nullable Map<String,Object> params)
此方法会生成基于mybatis类型的,采用自定义预编译参数名称的方式进行生成。
params可以为null,为null则不设置参数只生成sql语句。
如果无sql则返回null
params - 保存预编译参数的集合,可以为nullpublic String getSql(@Nullable List<Object> params)
此方法会生成基于jdbc原生类型,预编译参数使用"?"进行填充的sql语句,并将参数按照顺序填充到params中。
params可以为null,为null则不设置参数只生成sql语句。
如果无sql则返回null
param - 保存预编译参数的集合,可以为nullprotected String getCurrentSql(Map<String,Object> param, NameGenerator ng, com.gframework.sqlparam.StringWrapper stringWrapper)
param - 设置参数的map集合,为null则不设置参数ng - 参数绑定名称生成器public SqlParam eq(@Nullable String column, @Nullable Object value)
column - 判断的列,如果为null则什么都不做value - 要进行比较的值,如果为null则什么都不做public SqlParam ne(@Nullable String column, @Nullable Object value)
column - 判断的列,如果为null则什么都不做value - 要进行比较的值,如果为null则什么都不做public SqlParam in(@Nullable String column, @Nullable Object[] values)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做public SqlParam in(@Nullable String column, @Nullable Collection<?> values)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做public SqlParam notIn(@Nullable String column, @Nullable Object[] values)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做public SqlParam notIn(@Nullable String column, @Nullable Collection<?> values)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做public SqlParam like(@Nullable String column, @Nullable String value)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值(%:匹配0个或多个值,_:匹配任意一个值),如果为null则什么都不做public SqlParam notLike(@Nullable String column, @Nullable String value)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值(%:匹配0个或多个值,_:匹配任意一个值),如果为null则什么都不做public SqlParam isNull(@Nullable String column)
column - 判断的列,如果为null则什么都不做public SqlParam isNotNull(@Nullable String column)
column - 判断的列,如果为null则什么都不做public SqlParam lt(@Nullable String column, @Nullable Object value)
<判断规则column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做public SqlParam le(@Nullable String column, @Nullable Object value)
<=判断规则column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做public SqlParam gt(@Nullable String column, @Nullable Object value)
>判断规则column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做public SqlParam ge(@Nullable String column, @Nullable Object value)
>=判断规则column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做public <T extends Serializable> SqlParam betweenAnd(@Nullable String column, @Nullable T start, @Nullable T end)
T - 泛型的目的保证start和end数据类型一致column - 判断的列,如果为null则什么都不做start - 范围起始值,如果为null则什么都不做end - 范围结束值,如果为null则什么都不做@Nullable public static Param seq(@Nullable String column, @Nullable Object value)
column - 判断的列,如果为null则什么都不做value - 要进行比较的值,如果为null则什么都不做@Nullable public static Param sne(@Nullable String column, @Nullable Object value)
column - 判断的列,如果为null则什么都不做value - 要进行比较的值,如果为null则什么都不做@Nullable public static Param sin(@Nullable String column, @Nullable Object[] values)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做@Nullable public static Param sin(@Nullable String column, @Nullable Collection<?> values)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做@Nullable public static Param snotIn(@Nullable String column, @Nullable Object[] values)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做@Nullable public static Param snotIn(@Nullable String column, @Nullable Collection<?> values)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做@Nullable public static Param slike(@Nullable String column, @Nullable String value)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值(%:匹配0个或多个值,_:匹配任意一个值),如果为null则什么都不做@Nullable public static Param snotLike(@Nullable String column, @Nullable String value)
column - 判断的列,如果为null则什么都不做values - 要进行匹配的值(%:匹配0个或多个值,_:匹配任意一个值),如果为null则什么都不做@Nullable public static Param sisNull(@Nullable String column)
column - 判断的列,如果为null则什么都不做@Nullable public static Param sisNotNull(@Nullable String column)
column - 判断的列,如果为null则什么都不做@Nullable public static Param slt(@Nullable String column, @Nullable Object value)
<判断规则column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做@Nullable public static Param sle(@Nullable String column, @Nullable Object value)
<=判断规则column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做@Nullable public static Param sgt(@Nullable String column, @Nullable Object value)
>判断规则column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做@Nullable public static Param sge(@Nullable String column, @Nullable Object value)
>=判断规则column - 判断的列,如果为null则什么都不做values - 要进行匹配的值,如果为null则什么都不做@Nullable public static <T extends Serializable> Param sbetweenAnd(@Nullable String column, @Nullable T start, @Nullable T end)
T - 泛型的目的保证start和end数据类型一致column - 判断的列,如果为null则什么都不做start - 范围起始值,如果为null则什么都不做end - 范围结束值,如果为null则什么都不做public String getInnerOp()
public String getOuterOp()
Copyright © 2020 Pivotal Software, Inc.. All rights reserved.