|
1.QBE 適合列表頁屬性并搜索 public List findTestByConn(Class test){ Example example = Example.create(test); example.ignoreCase().enableLike(MatchMode.ANYWHERE); example.excludeZeroes();//表示如果test對象中屬性值為NULL或數(shù)字類型為0的不加入查詢 Criteria criteria = this.getSession().createCriteria(Test.class).add(example); return criteria.list(); } 注:該方法支持關(guān)系查詢, this.getSession().createCriteria(Test.class).add(example) .createCriteri(Test2.class).add(example); 2.集合過濾 this.getSession().createFilter(customer.getOrders(),"where this.price >1000 order by this.price").list(); 同樣的效果:this.getSession().createQuery("from Order o where o.customer=:customer and o.price >1000 order by o.price").setEntity("customer",customer).list(); 3.Query String sql ="select id from T_test "; SQLQuery query = getHibernateSession().createSQLQuery(sql); query.addScalar("id", Hibernate.STRING);//此處不定義,可能拿不到正確的結(jié)果集 List<String> list = query.list(); 4.QBC(可支持查詢部分字段) DetachedCriteria detachedCriteria = getDetachedCriteriaByColum(columName, test.class, "t"); //忽略大小寫模糊匹配 detachedCriteria.add(Restrictions.like("t.property1", "abc", MatchMode.ANYWHERE).ignoreCase()); //不等于 detachedCriteria.add(Restrictions.ne("t.property2", "aaa")); //等于 detachedCriteria.add(Restrictions.eq("t.property3", true)); //插入部分SQL限制結(jié)果集 detachedCriteria.add(Restrictions.sqlRestriction(this_.property6 not in(select id from test2)); //排序 detachedCriteria.addOrder(Order.asc("t.property4")).addOrder(Order.asc("t.property5")); List list = getHibernateTemplate().findByDetachedCriteria(detachedCriteria); //提供對查詢部分字段的封裝,適合單表 public DetachedCriteria getDetachedCriteriaByColum(String[] columName, Class className, String alias) { DetachedCriteria detachedCriteria = DetachedCriteria.forClass( className, alias); ProjectionList projectList = Projections.projectionList(); if (null == columName) { return null; } for (String colum : columName) { projectList .add(Projections.property(alias + "." + colum).as(colum)); } detachedCriteria.setProjection(projectList); detachedCriteria.setResultTransformer(Transformers .aliasToBean(className)); return detachedCriteria; } 5.Projections類 Criteria criteria = session.createCriteria(cat.class); criteria.setProjection(Projections.projectionList().add(Projections.rowCount())); //查詢總行數(shù) criteria.add(Projections.avg(propertyName)); //求平構(gòu)值 criteria.add(Projections.min(propertyName)); //最小值 criteria.add(Projections.max(propertyName)); //最大值 criteria.add(Projections.sum(propertyName)); //求和 criteria.add(Projections.groupProperty(propertyName)); //分組
|