cn.schoolwow.quickdao.domain.database.dql.subCondition.SubCondition Maven / Gradle / Ivy
package cn.schoolwow.quickdao.domain.database.dql.subCondition;
import cn.schoolwow.quickdao.domain.database.dql.condition.Condition;
import java.io.Serializable;
import java.util.Collection;
/**
* 关联子表查询接口
*
* 关联子表查询的joinTable方法和Condition接口中的类似,只不过这是调用joinTable方法的表称为父表,关联的表为子表,父表和子表的概念是相对的.
*
* - done()方法返回主表
* - doneSubCondition返回父表
*
*
*
* @see Condition
*/
public interface SubCondition extends Serializable {
/**
* 设置子表别名
*/
SubCondition tableAliasName(String tableAliasName);
/**
* 左外连接
*/
SubCondition leftJoin();
/**
* 右外连接
*/
SubCondition rightJoin();
/**
* 全外连接
*/
SubCondition fullJoin();
/**
* 添加on查询条件
* @param primaryField 主表/父表字段
* @param joinTableField 子表字段
*/
SubCondition on(String primaryField, String joinTableField);
/**
* 添加on查询条件
* @param primaryTableAliasName 指定表别名
* @param primaryField 指定表字段
* @param joinTableField 子表字段
*/
SubCondition on(String primaryTableAliasName, String primaryField, String joinTableField);
/**
* 添加空查询
*
* @param field 指明哪个字段为Null
*/
SubCondition addNullQuery(String field);
/**
* 添加非空查询
*
* @param field 指明哪个字段不为Null
*/
SubCondition addNotNullQuery(String field);
/**
* 添加空查询
*
* @param field 指明哪个字段不为空字符串
*/
SubCondition addEmptyQuery(String field);
/**
* 添加非空查询
*
* @param field 指明哪个字段不为空字符串
*/
SubCondition addNotEmptyQuery(String field);
/**
* 添加范围查询语句
*
* @param field 字段名
* @param values 指明在该范围内的值
*/
SubCondition addInQuery(String field, Object... values);
/**
* 添加范围查询语句
*
* @param field 字段名
* @param values 指明在该范围内的值
*/
SubCondition addInQuery(String field, Collection values);
/**
* 添加范围查询语句
*
* @param field 字段名
* @param values 指明在不该范围内的值
*/
SubCondition addNotInQuery(String field, Object... values);
/**
* 添加范围查询语句
*
* @param field 字段名
* @param values 指明在不该范围内的值
*/
SubCondition addNotInQuery(String field, Collection values);
/**
* 添加between语句
*
* @param field 字段名
* @param start 范围开始值
* @param end 范围结束值
*/
SubCondition addBetweenQuery(String field, Object start, Object end);
/**
* 添加Like查询
*
* @param field 字段名
* @param value 字段值
*/
SubCondition addLikeQuery(String field, Object value);
/**
* 添加Not Like查询
*
* @param field 字段名
* @param value 字段值
*/
SubCondition addNotLikeQuery(String field, Object value);
/**
* 添加where子查询
*
* @param field 字段名
* @param subQuery 子查询语句
*/
SubCondition addSubQuery(String field, Condition subQuery);
/**
* 添加where子查询
*
* @param field 字段名
* @param operator 操作符,可为>,>=,=,<<=
* @param subQuery 子查询语句
*/
SubCondition addSubQuery(String field, String operator, Condition subQuery);
/**
* 添加字段查询
*
* @param field 字段名
* @param value 字段值
*/
SubCondition addQuery(String field, Object value);
/**
* 添加字段查询
*
* @param field 字段名
* @param operator 操作符,可为>,>=,=,<<=
* @param value 字段值
*/
SubCondition addQuery(String field, String operator, Object value);
/**
* 添加开闭区间字段查询
*
* @param field 字段名
* @param value 区间值,例如(1,100)或者[1,100]
*/
SubCondition addIntervalQuery(String field, String value);
/**
* 添加自定义查询条件
* 调用本方法时请先查看Condition类JavaDoc注释和SubCondition类的JavaDoc注释
*
* @param query 子查询条件
* @param parameterList 查询参数
* @see Condition
* @see SubCondition
*/
SubCondition addRawQuery(String query, Object... parameterList);
/**
* 添加复杂集合查询
*
*
* 支持语法
* empty: 空查询
* not empty: 非空查询
* like: like查询
* not like: not like查询
* in: in查询
* not in: not in 查询
* interval: 开闭区间查询
* between: 范围查询
* gt: 大于
* gte: 大于等于
* lt: 小于
* lte: 小于等于
*
*
* @param field 字段名
* @param value 根据语法设置对应查询请求
*/
SubCondition addCompositeQuery(String field, String value);
/**
* 添加自定义字段,具体映射规则请看Condition类的JavaDoc注释
*
* @param fields 自定义查询列\
* @see Condition
*/
SubCondition addColumn(String... fields);
/**
* 添加自定义字段
* @param column 自定义字段
* @param columnAliasName 字段别名
*/
SubCondition addColumnAs(String column, String columnAliasName);
/**
* 添加子表字段
*/
SubCondition addTableColumn();
/**
* 添加指定排除字段外的主表字段
*
* @param excludeFields 指定主表排除字段
* @see Condition
*/
SubCondition addExcludeColumn(String... excludeFields);
/**
* 关联表查询,子表可再次关联子表
* 调用本方法时请先查看Condition类JavaDoc注释和SubCondition类的JavaDoc注释
*
* @param clazz 待关联的子表
* @param primaryField 主表关联字段
* @param joinTableField 子表关联字段
* @see Condition
* @see SubCondition
*/
SubCondition joinTable(Class clazz, String primaryField, String joinTableField);
/**
* 关联表查询,子表可再次关联子表
* 调用本方法时请先查看Condition类JavaDoc注释和SubCondition类的JavaDoc注释
*
* @param clazz 待关联的子表
* @param primaryField 主表关联字段
* @param joinTableField 子表关联字段
* @param compositField 子表实体类成员变量名
* @see Condition
* @see SubCondition
*/
SubCondition joinTable(Class clazz, String primaryField, String joinTableField, String compositField);
/**
* 关联表查询,子表可再次关联子表
* 调用本方法时请先查看Condition类JavaDoc注释和SubCondition类的JavaDoc注释
*
* @param tableName 待关联的子表
* @param primaryField 主表关联字段
* @param joinTableField 子表关联字段
* @see Condition
* @see SubCondition
*/
SubCondition joinTable(String tableName, String primaryField, String joinTableField);
/**
* 添加分组查询
*
* @param fields 分组字段
*/
SubCondition groupBy(String... fields);
/**
* 设置指定字段排序方式
*
* @param field 升序排列字段名
* @param asc 排序方式,值为asc或者desc
*/
SubCondition order(String field, String asc);
/**
* 根据指定字段升序排列
*
* @param fields 升序排列字段名
*/
SubCondition orderBy(String... fields);
/**
* 根据指定字段降序排列
*
* @param fields 降序排列字段名
*/
SubCondition orderByDesc(String... fields);
/**
* 获取lambdaSubCondition对象
*/
LambdaSubCondition lambdaSubCondition();
/**
* 返回父表
*
* @see {@link SubCondition#joinTable(Class, String, String)}
*/
SubCondition doneSubCondition();
/**
* 返回主表
*
* @see {@link Condition#joinTable(Class, String, String)}
*/
Condition done();
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy