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(...........)
你还需要知道的是:
限定符和类型 | 字段和说明 |
---|---|
protected static FieldMatcher |
dftFromFieldMatcher |
限定符 | 构造器和说明 |
---|---|
protected |
Cnd(SqlExpression exp) |
限定符和类型 | 方法和说明 |
---|---|
static boolean |
_ex(Object value) |
Cnd |
and(SqlExpression exp)
Cnd.where(...).and(Cnd.exp(.........))
|
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)
生成一个条件表达式
|
protected 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详细控制.
|
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()
已过时。
Since 1.b.50 不推荐使用这个函数构建 Cnd 的实例,因为看起来语意不明的样子
|
Cnd |
limit(int pageSize)
已过时。
|
Cnd |
limit(int pageNumber,
int pageSize)
分页
|
Cnd |
limit(Pager pager)
直接设置分页对象, 可以new Pager或dao.createPager得到
|
static Cnd |
NEW() |
Cnd |
or(SqlExpression exp)
Cnd.where(...).or(Cnd.exp(.........))
|
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.orderBy("age", "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 String toString()
public void setPojo(Pojo pojo)
public void joinSql(Entity<?> en, StringBuilder sb)
PItem
public int joinAdaptor(Entity<?> en, ValueAdaptor[] adaptors, int off)
PItem
joinAdaptor
在接口中 PItem
en
- 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体adaptors
- 待填充的适配器数组off
- 开始下标public int joinParams(Entity<?> en, Object obj, Object[] params, int off)
PItem
joinParams
在接口中 PItem
en
- 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体obj
- 当前操作对象params
- 待填充的参数数组off
- 开始下标public int paramCount(Entity<?> en)
paramCount
在接口中 PItem
en
- 参考的实体,如果为 null,则取当前元素所在 POJO 的关联实体public SqlExpressionGroup where()
public OrderBy getOrderBy()
getOrderBy
在接口中 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 所引用的复合主键protected static SqlExpression expEX(String name, String op, Object value)
public static boolean _ex(Object value)
public GroupBy getGroupBy()
getGroupBy
在接口中 Criteria
Copyright © 2017. All rights reserved.