hibernate中经常用到带多个参数的查询条件语句,如果悲催的使用语句的拼写成hql查询语句就浪费了轻量级持久层框架了,也不是面向对象化操作数据库了。
在这里hibernate提供了SimpleExpression来存放查询的条件,Restrictions。
List<SimpleExpression> expressions = new ArrayList<SimpleExpression>();
创建SimpleExpression的集合来存放所有的查询条件。
expressions.add(Restrictions.qt("quartzdate",params));//注意参数1是实体对应的字段(不是数据库字段),参数2是从前台传来的查询参数。
Restrictions使用:
Restrictions.eq() 等于
Restrictions.ne() 不等于
Restrictions.gt() 大于
Restrictions.ge() 大于等于
Restrictions.lt() 小于
Restrictions.le() 小于等于
Restrictions.isnull 等于null
Restrictions.isNotNull() 不等于null
Restrictions.like() 字符串匹配
Restrictions.and() 逻辑与
Restrictions.or() 逻辑或
Restrictions.not() 逻辑非
Restrictions.in() 等于列表中的值
Restrictions.not(Restrictions.in()) 不等于任何一个
Restrictions.between() 在两者之间
Criteria criteria = getSession().createCriteria(Feedback.class);
取得 Criteria ;代表一次查询。
Criterion:代表一个查询条件。
Restrictions:产生查询条件的工具类。
criteria.setMaxResults(count).setFirstResult(start);//分页
for(SimpleExpression exp:expressions ){//添加查询条件
criteria.add(exp);
}
criteria.addOrder(Order.desc("createOn"));//添加排序条件
return criteria.list();//执行数据查询