package org.dayatang.domain; import java.util.Collection; /** * 查询条件生成器,生成各种查询条件。 * 该类主要用于DDDLib的内部实现机制。DDDLib用户请使用Criteria代替CriterionBuilder * * @author yyang (<a href="mailto:gdyangyu@gmail.com">gdyangyu@gmail.com</a>) * */ public interface CriterionBuilder { /** * 创建一个代表“属性名 = 值”的查询条件 * @param propName 属性名 * @param value 值 * @return 一个查询条件 */ QueryCriterion eq(String propName, Object value); /** * 创建一个代表“属性名 != 值”的查询条件 * @param propName 属性名 * @param value 值 * @return 一个查询条件 */ QueryCriterion notEq(String propName, Object value); /** * 创建一个代表“属性名 >= 值”的查询条件 * @param propName 属性名 * @param value 值 * @return 一个查询条件 */ QueryCriterion ge(String propName, Comparable<?> value); /** * 创建一个代表“属性名 > 值”的查询条件 * @param propName 属性名 * @param value 值 * @return 一个查询条件 */ QueryCriterion gt(String propName, Comparable<?> value); /** * 创建一个代表“属性名 <= 值”的查询条件 * @param propName 属性名 * @param value 值 * @return 一个查询条件 */ QueryCriterion le(String propName, Comparable<?> value); /** * 创建一个代表“属性名 < 值”的查询条件 * @param propName 属性名 * @param value 值 * @return 一个查询条件 */ QueryCriterion lt(String propName, Comparable<?> value); /** * 创建一个代表“属性1 = 属性2”的查询条件 * @param propName 属性名 * @param otherPropName 另一个属性名 * @return 一个查询条件 */ QueryCriterion eqProp(String propName, String otherPropName); /** * 创建一个代表“属性1 != 属性2”的查询条件 * @param propName 属性名 * @param otherPropName 另一个属性名 * @return 一个查询条件 */ QueryCriterion notEqProp(String propName, String otherPropName); /** * 创建一个代表“属性1 > 属性2”的查询条件 * @param propName 属性名 * @param otherPropName 另一个属性名 * @return 一个查询条件 */ QueryCriterion gtProp(String propName, String otherPropName); /** * 创建一个代表“属性1 >= 属性2”的查询条件 * @param propName 属性名 * @param otherPropName 另一个属性名 * @return 一个查询条件 */ QueryCriterion geProp(String propName, String otherPropName); /** * 创建一个代表“属性1 < 属性2”的查询条件 * @param propName 属性名 * @param otherPropName 另一个属性名 * @return 一个查询条件 */ QueryCriterion ltProp(String propName, String otherPropName); /** * 创建一个代表“属性1 <= 属性2”的查询条件 * @param propName 属性名 * @param otherPropName 另一个属性名 * @return 一个查询条件 */ QueryCriterion leProp(String propName, String otherPropName); /** * 创建一个代表“集合属性元素数量 = 值”的查询条件(例如:查找子女数量=2的人) * @param propName 集合属性名 * @param size 集合元素的数量 * @return 一个查询条件 */ QueryCriterion sizeEq(String propName, int size); /** * 创建一个代表“集合属性元素数量 != 值”的查询条件(例如:查找子女数量!=2的人) * @param propName 集合属性名 * @param size 集合元素的数量 * @return 一个查询条件 */ QueryCriterion sizeNotEq(String propName, int size); /** * 创建一个代表“集合属性元素数量 > 值”的查询条件(例如:查找子女数量>2的人) * @param propName 集合属性名 * @param size 集合元素的数量 * @return 一个查询条件 */ QueryCriterion sizeGt(String propName, int size); /** * 创建一个代表“集合属性元素数量 >= 值”的查询条件(例如:查找子女数量>=2的人) * @param propName 集合属性名 * @param size 集合元素的数量 * @return 一个查询条件 */ QueryCriterion sizeGe(String propName, int size); /** * 创建一个代表“集合属性元素数量 < 值”的查询条件(例如:查找子女数量<2的人) * @param propName 集合属性名 * @param size 集合元素的数量 * @return 一个查询条件 */ QueryCriterion sizeLt(String propName, int size); /** * 创建一个代表“集合属性元素数量 <= 值”的查询条件(例如:查找子女数量<=2的人) * @param propName 集合属性名 * @param size 集合元素的数量 * @return 一个查询条件 */ QueryCriterion sizeLe(String propName, int size); /** * 创建一个代表“文本属性包含某段文字”的查询条件 * @param propName 文本属性名 * @param value 被匹配的文本 * @return 一个查询条件 */ QueryCriterion containsText(String propName, String value); /** * 创建一个代表“文本属性以某段文字开头”的查询条件 * @param propName 文本属性名 * @param value 被匹配的文本 * @return 一个查询条件 */ QueryCriterion startsWithText(String propName, String value); /** * 创建一个代表“属性值包含在某个集合中”的查询条件 * @param propName 属性名 * @param value 值的集合 * @return 一个查询条件 */ QueryCriterion in(String propName, Collection<?> value); /** * 创建一个代表“属性值包含在某个数组中”的查询条件 * @param propName 属性名 * @param value 值的数组 * @return 一个查询条件 */ QueryCriterion in(String propName, Object[] value); /** * 创建一个代表“属性值不包含在某个集合中”的查询条件 * @param propName 属性名 * @param value 值的集合 * @return 一个查询条件 */ QueryCriterion notIn(String propName, Collection<?> value); /** * 创建一个代表“属性值包含在某个数组中”的查询条件 * @param propName 属性名 * @param value 值的数组 * @return 一个查询条件 */ QueryCriterion notIn(String propName, Object[] value); /** * 创建一个代表“属性值位于某个区间范围”的查询条件。结果包含下限,不包含上限。 * @param propName 属性名 * @param from 区间下限 * @param to 区间上限 * @return 一个查询条件 */ QueryCriterion between(String propName, Comparable<?> from, Comparable<?> to); /** * 创建一个代表“属性值为null”的查询条件 * @param propName 属性名 * @return 一个查询条件 */ QueryCriterion isNull(String propName); /** * 创建一个代表“属性值不为null”的查询条件 * @param propName 属性名 * @return 一个查询条件 */ QueryCriterion notNull(String propName); /** * 创建一个代表“集合属性值为空集”的查询条件 * @param propName 属性名 * @return 一个查询条件 */ QueryCriterion isEmpty(String propName); /** * 创建一个代表“集合属性值不为空集”的查询条件 * @param propName 属性名 * @return 一个查询条件 */ QueryCriterion notEmpty(String propName); /** * 创建一个代表“属性值为true”的查询条件 * @param propName 属性名 * @return 一个查询条件 */ QueryCriterion isTrue(String propName); /** * 创建一个代表“属性值为false”的查询条件 * @param propName 属性名 * @return 一个查询条件 */ QueryCriterion isFalse(String propName); /** * 创建一个代表“文本属性值为null或空字符串”的查询条件 * @param propName 属性名 * @return 一个查询条件 */ QueryCriterion isBlank(String propName); /** * 创建一个代表“文本属性值不为null和空字符串”的查询条件 * @param propName 属性名 * @return 一个查询条件 */ QueryCriterion notBlank(String propName); /** * 创建一个代表“对一个查询条件取反”的查询条件 * @param criterion 查询条件 * @return 一个查询条件 */ QueryCriterion not(QueryCriterion criterion); /** * 创建一个代表“同时符合多个查询条件”的查询条件 * @param criteria 一批查询条件 * @return 一个查询条件 */ QueryCriterion and(QueryCriterion... criteria); /** * 创建一个代表“符合多个查询条件之一”的查询条件 * @param criteria 一批查询条件 * @return 一个查询条件 */ QueryCriterion or(QueryCriterion... criteria); /** * 创建一个代表“空查询条件”的查询条件。“空查询条件”对查询不添加任何限制,它的存在只是为了简化代码逻辑。 * @return 一个空查询条件 */ QueryCriterion empty(); }