QBC查詢
阿新 • • 發佈:2017-05-21
新的 篩選 進行 brush 是否為空 允許 java cti .sql 1、基本語法
session.beginTransaction(); Criteria criteria = session.createCriteria(Person.class); SimpleExpression gt = Restrictions.eq("name","張三"); criteria.add(gt); List<Person> list = criteria.list();A、 Criteria setFirstResult(int firstResult):設置查詢返回的第一行記錄(索引從0開始); B、 Criteria setMaxResult(int maxResult):設置查詢返回的記錄數; C、 Criteria add(Criterion criterion):增加查詢條件 D、 Criteria addOrder(Order order):增加排序規則,例如addOrder(Order.desc("type")); E、 static eq | ne | gt | ge | lt | le(String propertyName,Object value),判斷指定屬性值是否等於,不等於,大於,大於等於,小於,小於等於指定值 F、 static Criterion between(String propertyName,Object lo,Object hi)判斷屬性值在某個值範圍之內 G、 static Criterion like(String propertyName,Object value),判斷屬性值匹配某個字符串,不區分大小寫,條件字符串要不是完整的字符串去匹配,要不采用%通配符進行匹配 H、 static Criterion ilike(String propertyName,String value,MatchMode matchMode),判斷屬性值匹配某個字段,不區分大小寫,模式是以判斷以某個字符串開頭或者結尾等,這個匹配字符串可以是整個值的字符串,也可以是其中的一部分,也可以使用%通配符.
-
-
- MatchMode.START:字符串在最前面的位置.相當於"like ‘key%‘"
- MatchMode.END:字符串在最後面的位置.相當於"like ‘%key‘"
- MatchMode.ANYWHERE:字符串在中間匹配.相當於"like ‘%key%‘"
- MatchMode.EXACT:字符串精確匹配.相當於"like ‘key‘
-
Criteria criteria = session.createCriteria(Student.class,"s"); criteria.add(Restrictions.eq("id",1)); List list = criteria.createCriteria("room","r",JoinType.INNER_JOIN).list(); for (Object object : list){ Student student=(Student)object; System.out.println(student.getName()); System.out.println(student.getId()); ClassRoom room = student.getRoom(); System.out.println(room.getId()); System.out.println(room.getName()); }
3、投影、聚合和分組 Hibernate的條件過濾中使用Projection代表投影運算,Projection是一個接口,而Projections作為Projection的工廠,負責生成Projection對象; 一旦產生了Projection對象之後,就可以通過Criteria提供的setProjection(Projection projection)方法來進行投影運算。 1>AggregateProjection avg(String propertyname):計算特定屬性的平均值,類似於avg函數; 2>CountProjection count(String propertyname):統計查詢結果在某列上的記錄條數,類似於count(column)函數; 3>CountProjection countDistinct(String propertyname):統計查詢結果在某列上不重復的記錄條數,類似於count(distinct column)函數; 4>PropertyProjection groupProperty(String propertyname):將查詢結果按某列上的值進行分組,類似於添加group by子句; 5>AggregateProjection max(String propertyname):統計查詢結果在某列上的最大值,類似於max函數; 6>AggregateProjection min(String propertyname):統計查詢結果在某列上的最小值,類似於min函數; 7>Projection rowCount():統計查詢結果的記錄條數,類似於count(*)的功能; 8>AggregateProjection sum(String propertyname):統計查詢結果在某列上的總和,類似於sum函數;
//使用createCriteria開始條件查詢 List list = sess.createCriteria(Enrolment.class) .createAlias("student", "s") .setProjection(Projections.projectionList() //統計記錄條數 .add(Projections.rowCount()) //統計選擇該課程裏最大的學生姓名 .add(Projections.max("s.name")) //按照course進行分組 .add(Projections.groupProperty("course"))) .list();
QBC查詢