QBC常用限定方法 Restrictions.eq --> equal,等于. Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq 的效果 Restrictions.gt --> great-than > 大于 Restrictions.ge --> great-equal >= 大于等于 Restrictions.lt --> less-than, < 小于 Restrictions.le --> less-equal <= 小于等于 Restrictions.between --> 对应SQL的between子句 Restrictions.like --> 对应SQL的LIKE子句 Restrictions.in --> 对应SQL的in子句 Restrictions.and --> and 关系 Restrictions.or --> or 关系 Restrictions.isNull --> 判断属性是否为空,为空则返回true Restrictions.isNotNull --> 与isNull相反 Restrictions.sqlRestriction --> SQL限定的查询 Order.asc --> 根据传入的字段进行升序排序 Order.desc --> 根据传入的字段进行降序排序 MatchMode.EXACT --> 字符串精确匹配.相当于"like 'value'" MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like '%value%'" MatchMode.START --> 字符串在最前面的位置.相当于"like 'value%'" MatchMode.END --> 字符串在最后面的位置.相当于"like '%value'" 例子 查询学生姓名在AAA,BBB,CCC之间的学生对象 查询年龄为空的学生对象 查询年龄等于20或者年龄为空的学生对象
--------------------------------------------------------------------
----------------------------------------------------------------------------------- 今天用了写hibernate高级查询时用了Restrictions(当然Expression也是可以以的)这个类.感觉不错. 里面的or可以无限加的.还是比较好用
|
实例代码:
public PaginationSupport getCsSubsidyVerifysByDwr(DwrBackParams params) {
int pageSize = params.getLimit();
int currentPage = params.getStart() / pageSize + 1;
boolean isRecount = params.isReCount();
Map map = this.dwrParams2Map(params);
String fromDate = (String) map.get("fromDate");
String toDate = (String) map.get("toDate");
String subsidyType = (String) map.get("subsidyType");
String invoiceNo = (String) map.get("invoiceNo");
String personName = (String) map.get("personName");
String personNo = (String) map.get("personNo");
String orgCd = (String) map.get("orgCd");
String auditIsSucc = (String) map.get("auditIsSucc");
Timestamp from = DateOperator.stringToTimestampStar(fromDate);
Timestamp to = DateOperator.stringToTimestampEnd(toDate);
DetachedCriteria criteria = DetachedCriteria.forClass(CsSubsidyVerify.class);
criteria
.add(Restrictions.eq("dataState", DatabaseConstants.DATA_STATE_DEFAULT))
.add(Restrictions.eq("businessYear", getBussinesYear()))
.add(Restrictions.between("inputDate", from, to));
if (StringUtils.isNotBlank(auditIsSucc))
criteria.add(Restrictions.eq("auditIsSucc", auditIsSucc));
if (StringUtils.isNotBlank(subsidyType))
criteria.add(Restrictions.eq("subsidyType", subsidyType));
if (StringUtils.isNotBlank(invoiceNo))
criteria.add(Restrictions.like("invoiceNo", invoiceNo, MatchMode.START));
if (StringUtils.isNotBlank(personNo))
criteria.add(Restrictions.like("personNo", personNo, MatchMode.START));
if (StringUtils.isNotBlank(personName))
criteria.add(Restrictions.like("personName", personName, MatchMode.START));
if (StringUtils.isNotBlank(orgCd))
criteria.add(Restrictions.like("orgCd", orgCd, MatchMode.START));
PaginationSupport ps = dao.findPageByCriteria(criteria,
Order.desc("inputDate"), currentPage, pageSize, isRecount);
return ps;
}