public class Cnd extends Object implements OrderBy, Criteria, GroupBy
List
Cnd.orderBy().desc("id"); 链式赋值示例
Cnd.where("id", ">", 34).and("name","LIKE","T%").asc("name");
相当于
WHERE id>34 AND name LIKE 'T%' ORDER BY name ASC
相当于
ORDER BY id DESC
Cnd.where(Cnd.exps("name", "=", "wendal").or("age", "<", 18)).and("location", "!=", "地球")
静态条件,直接拼入sql,不做任何转义. Oracle的日期传Date对象,而非用to_date等数据库方法
Cnd.where(new Static("ct < to_date('2015-06-26')")).and(...........)
between用法
Cnd.where("age", "between", new Object[]{19,29}).and(...........)
你还需要知道的是:
Condition
,
Serialized FormModifier and Type | Field and Description |
---|---|
protected static FieldMatcher |
dftFromFieldMatcher |
Modifier | Constructor and Description |
---|---|
protected |
Cnd(SqlExpression exp) |
Modifier and Type | Method and Description |
---|---|
static boolean |
_ex(Object value) |
Cnd |
and(SqlExpression exp)
Cnd.where(...).and(Cnd.exp(.........)) 或 Cnd.where(...).and(Cnd.exps(.........))
|
Cnd |
and(String name,
String op,
Object value)
Cnd.where(...).and("age", "<", 40)
|
Cnd |
andEX(String name,
String op,
Object value)
若value为null/空白字符串/空集合/空数组,则本条件不添加.
|
Cnd |
andNot(SqlExpression exp)
and一个条件表达式并且取非
|
Cnd |
andNot(String name,
String op,
Object value)
and一个条件,并且取非
|
OrderBy |
asc(String name)
按Java属性/字段属性进行升序.
|
static Cnd |
byCri(SimpleCriteria cri)
用SimpleCriteria生成一个Cnd实例
|
static SimpleCriteria |
cri()
生成一个简单条件对象
|
OrderBy |
desc(String name)
按Java属性/字段属性进行降序.
|
boolean |
equals(Object obj)
判断两个Cnd是否相等
|
static SqlExpression |
exp(String name,
String op,
Object value)
生成一个条件表达式
|
static SqlExpression |
expEX(String name,
String op,
Object value) |
static SqlExpressionGroup |
exps(SqlExpression exp)
将一个条件表达式封装为条件表达式组
|
static SqlExpressionGroup |
exps(String name,
String op,
Object value)
生成一个条件表达式组
|
static Condition |
format(String format,
Object... args)
用字符串和参数格式化出一个条件语句,注意,不会抹除特殊字符
|
static Cnd |
from(Dao dao,
Object obj)
用默认规则(忽略零值和空值)生成Cnd实例
|
static Cnd |
from(Dao dao,
Object obj,
FieldMatcher matcher)
根据一个对象生成Cnd条件, FieldMatcher详细控制.
assertEquals(" WHERE name='wendal' AND age=0", Cnd.from(dao, pet, FieldMatcher.make("age|name", null, true).setIgnoreDate(true)).toString()); |
SimpleCriteria |
getCri()
获取内部的where属性
|
GroupBy |
getGroupBy() |
OrderBy |
getOrderBy()
单独获取排序条件,建议使用asc或desc,而非直接取出排序条件.
|
Pager |
getPager()
获取分页对象,默认是null
|
Pojo |
getPojo()
获取已设置的Pojo, 默认为null
|
GroupBy |
groupBy(String... names)
分组
|
GroupBy |
having(Condition cnd)
分组中的having条件
|
int |
joinAdaptor(Entity<?> en,
ValueAdaptor[] adaptors,
int off)
根据自身的元素内容,为适配器数组填充适配器
|
int |
joinParams(Entity<?> en,
Object obj,
Object[] params,
int off)
根据自身的元素内容,为参数数组填充参数
|
void |
joinSql(Entity<?> en,
StringBuilder sb)
将当前的语句组成元素输出,以便组成 PreparedStatement 语句
|
static Cnd |
limit()
Deprecated.
Since 1.b.50 不推荐使用这个函数构建 Cnd 的实例,因为看起来语意不明的样子
|
Cnd |
limit(int pageSize)
Deprecated.
|
Cnd |
limit(int pageNumber,
int pageSize)
分页
|
Cnd |
limit(Pager pager)
直接设置分页对象, 可以new Pager或dao.createPager得到
|
static Cnd |
NEW() |
static Nesting |
nst(Dao dao)
构造一个可嵌套条件,需要dao支持才能映射类与表和属性与列
|
Cnd |
or(SqlExpression exp)
Cnd.where(...).or(Cnd.exp(.........)) 或 Cnd.where(...).or(Cnd.exps(.........))
|
Cnd |
or(String name,
String op,
Object value)
Cnd.where(...).or("age", "<", 40)
|
static OrderBy |
orderBy()
单纯生成一个Orderby条件
|
OrderBy |
orderBy(String name,
String dir)
当dir为asc时判断为升序,否则判定为降序.
|
Cnd |
orEX(String name,
String op,
Object value)
若value为null/空白字符串/空集合/空数组,则本条件不添加.
|
Cnd |
orNot(SqlExpression exp) |
Cnd |
orNot(String name,
String op,
Object value) |
int |
paramCount(Entity<?> en) |
void |
setPojo(Pojo pojo)
关联的Pojo,可以用于toString时的name属性映射
|
String |
toSql(Entity<?> en)
根据实体Entity将本对象转化为sql语句, 条件表达式中的name属性将转化为数据库字段名称
|
String |
toString()
直接转为SQL语句, 如果setPojo未曾调用, 条件表达式中的name属性未映射为数据库字段
|
SqlExpressionGroup |
where()
获取Cnd中的where部分,注意,对SqlExpressionGroup的修改也会反映到Cnd中,因为是同一个对象
|
static Cnd |
where(SqlExpression e)
用一个条件表达式构建一个Cnd实例
|
static Cnd |
where(String name,
String op,
Object value)
生成一个新的Cnd实例
|
static Condition |
wrap(String str)
直接用字符串生成一个条件对象
|
static Condition |
wrap(String sql,
Object value)
使用CharSegment拼装一个条件对象
|
protected static FieldMatcher dftFromFieldMatcher
protected Cnd(SqlExpression exp)
public static Condition format(String format, Object... args)
format
- sql条件args
- 参数public static Condition wrap(String sql, Object value)
sql
- sql模板value
- 参数CharSegment
public static SqlExpression exp(String name, String op, Object value)
name
- Java属性或字段名称op
- 操作符,可以是 = like 等等value
- 参数值.public static SqlExpressionGroup exps(String name, String op, Object value)
name
- Java属性或字段名称op
- 操作符,可以是 = like 等等value
- 参数值.public static SqlExpressionGroup exps(SqlExpression exp)
exp
- 原本的条件表达式public static Cnd where(String name, String op, Object value)
name
- java属性或字段名称, 推荐用Java属性op
- 操作符,可以是= like等等value
- 参数值. 如果操作符是between,参数值需要是new Object[]{12,39}形式public static Cnd where(SqlExpression e)
e
- 条件表达式public static SimpleCriteria cri()
public static OrderBy orderBy()
public static Cnd limit()
public static Cnd NEW()
public static Cnd byCri(SimpleCriteria cri)
cri
- SimpleCriteria实例public SimpleCriteria getCri()
public OrderBy orderBy(String name, String dir)
public Cnd and(SqlExpression exp)
exp
- 条件表达式public Cnd and(String name, String op, Object value)
name
- Java属性或字段名称,推荐用Java属性,如果有的话op
- 操作符,可以是 = like等value
- 参数值, 如果是between的话需要传入new Object[]{19,28}public Cnd or(SqlExpression exp)
exp
- 条件表达式public Cnd or(String name, String op, Object value)
name
- Java属性或字段名称,推荐用Java属性,如果有的话op
- 操作符,可以是 = like等value
- 参数值, 如果是between的话需要传入new Object[]{19,28}public Cnd andNot(SqlExpression exp)
exp
- 条件表达式public Cnd andNot(String name, String op, Object value)
name
- Java属性或字段名称,推荐用Java属性,如果有的话op
- 操作符,可以是 = like等value
- 参数值, 如果是between的话需要传入new Object[]{19,28}public Cnd orNot(SqlExpression exp)
andNot(SqlExpression)
public Cnd orNot(String name, String op, Object value)
andNot(String, String, Object)
public String toString()
public void setPojo(Pojo pojo)
public Pojo getPojo()
public void joinSql(Entity<?> en, StringBuilder sb)
PItem
public int joinAdaptor(Entity<?> en, ValueAdaptor[] adaptors, int off)
PItem
joinAdaptor
in interface PItem
en
- 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体adaptors
- 待填充的适配器数组off
- 开始下标public int joinParams(Entity<?> en, Object obj, Object[] params, int off)
PItem
joinParams
in interface PItem
en
- 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体obj
- 当前操作对象params
- 待填充的参数数组off
- 开始下标public int paramCount(Entity<?> en)
paramCount
in interface PItem
en
- 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体public SqlExpressionGroup where()
public OrderBy getOrderBy()
getOrderBy
in interface Criteria
public Cnd limit(int pageNumber, int pageSize)
pageNumber
- 页数, 若小于1则代表全部记录pageSize
- 每页数量@Deprecated public Cnd limit(int pageSize)
pageSize
- 每页大小public Cnd limit(Pager pager)
pager
- 分页对象public static Cnd from(Dao dao, Object obj)
dao
- Dao实例,不能为nullobj
- 对象, 若为null,则返回值为null, 不可以是Class/字符串/数值/布尔类型public static Cnd from(Dao dao, Object obj, FieldMatcher matcher)
assertEquals(" WHERE name='wendal' AND age=0", Cnd.from(dao, pet, FieldMatcher.make("age|name", null, true).setIgnoreDate(true)).toString());
dao
- Dao实例obj
- 基对象,不可以是Class,字符串,数值和Booleanmatcher
- 过滤字段属性, 可配置哪些字段可用/不可用/是否忽略空值/是否忽略0值/是否忽略java.util.Date类及其子类的对象/是否忽略@Id所标注的主键属性/是否忽略 \@Name 所标注的主键属性/是否忽略 \@Pk 所引用的复合主键public Cnd andEX(String name, String op, Object value)
and(String, String, Object)
public Cnd orEX(String name, String op, Object value)
or(String, String, Object)
public static SqlExpression expEX(String name, String op, Object value)
public static boolean _ex(Object value)
public GroupBy getGroupBy()
getGroupBy
in interface Criteria
Copyright © 2017. All rights reserved.