Example 示例查询,当查询条件比较多,用此方法查询就免去了大量的if...else...的烦恼。
创建示例查询:
Example example = Example.create(sor);
Criteria criteria = this.getSession().createCriteria(demo.class);
criteria.add(example);
criteria.addOrder(Order.desc("id")); //查询结果按id的倒序排列,就是最新录入的数据将显示在最上面
return criteria.list(); //将查询结果做为List返回
* sor为方法传进来的表对象
但如果并不是所有的查询条件都是要精确匹配的怎么办啊,请目光下下移:
Example example = Example.create(sor).excludeProperty("a"); //将属性a排除在示例查询外
Criteria criteria = this.getSession().createCriteria(
ShipOfficeRegistry.class);
criteria.add(example);
if(sor.getA()!=null) criteria.add(Expression.ge("a", sor.getA())); //因为示例查询默认排除为null的查询条件,所以当a不为null时,将a做为一个额外的条件加入查询
criteria.addOrder(Order.desc("id"));
return criteria.list();
* sor为方法传进来的表对象
当用Criteria查询产生重复数据时,可加入一个查询条件criteria.setResultTransformer(c.DISTINCT_ROOT_ENTITY);
count查询
criteria.setProjection(Projections.rowCount());