1 packagetest4Criteria;2
3 importjava.util.ArrayList;4 importjava.util.List;5 importjava.util.Set;6
7 importjunit.framework.TestCase;8 importorg.hibernate.Criteria;9 importorg.hibernate.Session;10 importorg.hibernate.cfg.AnnotationConfiguration;11 importorg.hibernate.criterion.Criterion;12 importorg.hibernate.criterion.DetachedCriteria;13 importorg.hibernate.criterion.Order;14 importorg.hibernate.criterion.Projections;15 importorg.hibernate.criterion.Property;16 importorg.hibernate.criterion.Restrictions;17
18 importentity.Grade;19 importentity.Student;20 importentity.TrStudent;21
22 importutil.HibernateUtil;23
24 public class Criterion01 extendsTestCase{25 Session session=null;26
27
28
29 /**
30 * critertion 查询31 */
32 public voidtestCriterion1(){33 try{34 session=HibernateUtil.currentSession();35 session.beginTransaction();36 //查询整个类
37 List grade=session.createCriteria(Grade.class).list();38 for(int i=0;i
42 }43
44
45 } catch(Exception e) {46 //TODO: handle exception
47 e.printStackTrace();48 }finally{49 HibernateUtil.closeSession();50 }51 try{52 session=HibernateUtil.currentSession();53 session.beginTransaction();54 //查询指定值
55 List grade=session.createCriteria(Grade.class)//56 .add(Restrictions.eq("gradename","一年级"))//57 .list();58 for(int i=0;i
62 }63
64
65 } catch(Exception e) {66 //TODO: handle exception
67 e.printStackTrace();68 }finally{69 HibernateUtil.closeSession();70 }71
72 }73 /**
74 * 比较运算75 */
76 public voidtestCriterion2(){77 try{78 session=HibernateUtil.currentSession();79 session.beginTransaction();80 //大于条件
81 List grades=session.createCriteria(Grade.class).add(Restrictions.gt("gradeid", 2)).list();82
83 for(int i=0;i
86 }87 } catch(Exception e) {88 //TODO: handle exception
89 e.printStackTrace();90 }finally{91 HibernateUtil.closeSession();92
93 }94 System.out.println("---大于等于条件--------------------");95 try{96 session=HibernateUtil.currentSession();97 session.beginTransaction();98 //大于等于条件
99 List grades=session.createCriteria(Grade.class).add(Restrictions.ge("gradeid", 2)).list();100
101 for(int i=0;i
104 }105 } catch(Exception e) {106 //TODO: handle exception
107 e.printStackTrace();108 }finally{109 HibernateUtil.closeSession();110
111 }112
113 System.out.println("---小于等于条件--------------------");114 try{115 session=HibernateUtil.currentSession();116 session.beginTransaction();117 //大于等于条件
118 List grades=session.createCriteria(Grade.class).add(Restrictions.le("gradeid", 2)).list();119
120 for(int i=0;i
123 }124 } catch(Exception e) {125 //TODO: handle exception
126 e.printStackTrace();127 }finally{128 HibernateUtil.closeSession();129
130 }131 System.out.println("---等于空--------------------");132 try{133 session=HibernateUtil.currentSession();134 session.beginTransaction();135 //大于等于条件
136 List grades=session.createCriteria(Grade.class).add(Restrictions.isNull("gradeid")).list();137
138 for(int i=0;i
141 }142 } catch(Exception e) {143 //TODO: handle exception
144 e.printStackTrace();145 }finally{146 HibernateUtil.closeSession();147
148 }149
150 }151 /**
152 * 范围运算153 */
154 public voidtestCriterion3(){155 try{156 session=HibernateUtil.currentSession();157 session.beginTransaction();158 Object[] obj={1,2,3};159 //in
160 List grades=session.createCriteria(Grade.class)//161 .add(Restrictions.in("gradeid",obj))//162 .list();163 for(int i=0;i
166 }167 } catch(Exception e) {168 //TODO: handle exception
169 e.printStackTrace();170 }171 finally{172 HibernateUtil.closeSession();173
174 }175 System.out.println("-----not--in------");176 try{177 session=HibernateUtil.currentSession();178 session.beginTransaction();179 Object[] obj={1,2,3};180 //in
181 List grades=session.createCriteria(Grade.class)//182 .add(Restrictions.not(Restrictions.in("gradeid",obj)))//183 .list();184 for(int i=0;i
187 }188 } catch(Exception e) {189 //TODO: handle exception
190 e.printStackTrace();191 }192 finally{193 HibernateUtil.closeSession();194
195 }196
197 System.out.println("--not-between- and--");198 try{199 session=HibernateUtil.currentSession();200 session.beginTransaction();201 Object[] obj={1,2,3};202 //in
203 List grades=session.createCriteria(Grade.class)//204 .add(Restrictions.not(Restrictions.between("gradeid",1,3)))//205 .list();206 for(int i=0;i
209 }210 } catch(Exception e) {211 //TODO: handle exception
212 e.printStackTrace();213 }214 finally{215 HibernateUtil.closeSession();216
217 }218
219 System.out.println("---between- and--");220 try{221 session=HibernateUtil.currentSession();222 session.beginTransaction();223 Object[] obj={1,2,3};224 //in
225 List grades=session.createCriteria(Grade.class)//226 .add(Restrictions.between("gradeid",1,3))//227 .list();228 for(int i=0;i
231 }232 } catch(Exception e) {233 //TODO: handle exception
234 e.printStackTrace();235 }236 finally{237 HibernateUtil.closeSession();238
239 }240 }241
242 /**
243 * 字符串模式匹配 like ilike244 */
245 public voidtestCriterion4(){246 try{247 session=HibernateUtil.currentSession();248 session.beginTransaction();249 String scase="ab";250 List student=session.createCriteria(Student.class).add(Restrictions.like("name", "%"+scase+"%")).list();251 for(int i=0;i
259 }260 System.out.println(name.substring(name.indexOf(scase)+scase.length(),name.length()));261
262 }263
264 } catch(Exception e) {265 //TODO: handle exception
266 }finally{267 HibernateUtil.closeSession();268
269 }270 System.out.println("------ilike----------");271 try{272 session=HibernateUtil.currentSession();273 session.beginTransaction();274 String scase="eli";275 List student=session.createCriteria(Student.class).add(Restrictions.ilike("name", "%"+scase+"%")).list();276 for(int i=0;i
284 }285 System.out.println(name.substring(name.indexOf(scase)+scase.length(),name.length()));286
287 }288 } catch(Exception e) {289 //TODO: handle exception
290 }finally{291 HibernateUtil.closeSession();292
293 }294 }295 /**
296 * 逻辑运算297 */
298 public voidtestCriterion5(){299 try{300 session=HibernateUtil.currentSession();301 session.beginTransaction();302 List grades=session.createCriteria(Grade.class).add(Restrictions.and(Restrictions.eq("gradename", "一年级"), Restrictions.le("gradeid", 5))).list();303 for(int i=0;i
306 }307 } catch(Exception e) {308 //TODO: handle exception
309 e.printStackTrace();310 }finally{311 HibernateUtil.closeSession();312
313 }314 System.out.println("-------or-----------");315 try{316 session=HibernateUtil.currentSession();317 session.beginTransaction();318 List grades=session.createCriteria(Grade.class).add(Restrictions.or(Restrictions.eq("gradename", "一年级"), Restrictions.le("gradeid", 3))).list();319 for(int i=0;i
322 }323 } catch(Exception e) {324 //TODO: handle exception
325 e.printStackTrace();326 }finally{327 HibernateUtil.closeSession();328
329 }330 System.out.println("-------not-----------");331 try{332 session=HibernateUtil.currentSession();333 session.beginTransaction();334 List grades=session.createCriteria(Grade.class).add(Restrictions.not(Restrictions.eq("gradename", "一年级"))).list();335 for(int i=0;i
338 }339 } catch(Exception e) {340 //TODO: handle exception
341 e.printStackTrace();342 }finally{343 HibernateUtil.closeSession();344
345 }346
347 }348 /**
349 * 集合运算350 */
351 public voidtestCriterion6(){352 try{353 session=HibernateUtil.currentSession();354 session.beginTransaction();355 List grades=session.createCriteria(Grade.class).add(Restrictions.isNotEmpty("stu")).list();356 for(int i=0;i
360
361 } catch(Exception e) {362 //TODO: handle exception
363 e.printStackTrace();364 }finally{365 HibernateUtil.closeSession();366
367 }368 }369
370 /**
371 * 动态查询372 */
373 public voidtestTrends(){374 try{375 session=HibernateUtil.currentSession();376 session.beginTransaction();377 TrStudent tr=newTrStudent();378 tr.setName("%eli%");379 tr.setStartGrade(1);380 tr.setEndGrade(3);381 Criteria cri= session.createCriteria(Student.class);382 if(tr.getName()!=null){383 cri.add(Restrictions.like("name", tr.getName()));384 }if(tr.getStartGrade()!=null&&tr.getEndGrade()!=null){385 cri.add(Restrictions.between("gradeid",tr.getStartGrade(),tr.getEndGrade()));386
387 }if(tr.getStartGrade()!=null&&tr.getEndGrade()==null){388 cri.add(Restrictions.ge("gradeid",tr.getStartGrade()));389
390 }391 if(tr.getStartGrade()==null&&tr.getEndGrade()!=null){392 cri.add(Restrictions.le("gradeid",tr.getEndGrade()));393
394 }395 List student=cri.addOrder(Order.asc("gradeid")).setMaxResults(80).list();396 //根据年级排序,每页显示十条
397 Integer pagesize=10;398 Integer page=1;399 System.out.println(student.size()/pagesize);400 for(int i=0;i
409
410
411 }412
413
414 } catch(Exception e) {415 //TODO: handle exception
416 e.printStackTrace();417 }finally{418 HibernateUtil.closeSession();419 }420
421
422 }423 /**
424 * 链接查询425 */
426 public voidtestrelevance(){427 try{428 session=HibernateUtil.currentSession();429 session.beginTransaction();430 List student=session.createCriteria(Student.class).createCriteria("grade").addOrder(Order.asc("gradeid")).setMaxResults(20).list();431 for(int i=0;i
435
436
437 } catch(Exception e) {438 //TODO: handle exception
439 e.printStackTrace();440 }finally{441 HibernateUtil.closeSession();442 }443 System.out.println("---createAlias()查询---");444 try{445 session=HibernateUtil.currentSession();446 session.beginTransaction();447 List student=session.createCriteria(Student.class,"s").createAlias("grade","g").addOrder(Order.asc("s.gradeid")).setMaxResults(20).list();448 for(int i=0;i
452 } catch(Exception e) {453 //TODO: handle exception
454 e.printStackTrace();455 }finally{456 HibernateUtil.closeSession();457 }458 }459
460 /**
461 * 投影查询462 */
463 public voidtestProj(){464 System.out.println("--查询记录总数--");465 try{466 session=HibernateUtil.currentSession();467 session.beginTransaction();468 //查询所有年级名称
469 Object obj=session.createCriteria(Grade.class)470 .setProjection(Projections.projectionList().add(Projections.rowCount()))471 .list();472 System.out.println("所有班级:"+obj);473
474 } catch(Exception e) {475 //TODO: handle exception
476 e.printStackTrace();477 }finally{478 HibernateUtil.closeSession();479 }480
481 System.out.println("--查询班级名称--");482 try{483 session=HibernateUtil.currentSession();484 session.beginTransaction();485 //查询所有年级名称
486 Object obj=session.createCriteria(Grade.class)487 .setProjection(Projections.projectionList().add(Property.forName("gradename")))488 .list();489 System.out.println(obj);490
491 } catch(Exception e) {492 //TODO: handle exception
493 e.printStackTrace();494 }finally{495 HibernateUtil.closeSession();496 }497 }498
499 /**
500 * DetachedCriteria 离线查询501 */
502 public voidtestoff_line(){503 try{504 //这段代码一般放在web产生查询条件
505 DetachedCriteria det=DetachedCriteria.forClass(Student.class,"s")506 .createAlias("s.grade", "g")507 .add(Restrictions.eq("g.gradename", "幼儿园"));508
509 //数据访问层
510 session=HibernateUtil.currentSession();511 session.beginTransaction();512 List students=det.getExecutableCriteria(session).add(Restrictions.ilike("s.name","%yap%")).setMaxResults(50).list();513 //打印
514 for(int i=0;i
518 } catch(Exception e) {519 //TODO: handle exception
520 e.printStackTrace();521 }finally{522 HibernateUtil.closeSession();523
524 }525 }526 /**注解 的效果527 * 启动时会在数据库创建一个表528 */
529 public voidtestNote(){530 try{531 AnnotationConfiguration anc=newAnnotationConfiguration().configure();532 session=anc.buildSessionFactory().openSession();533 session.beginTransaction();534 session.getTransaction().commit();535 } catch(Exception e) {536 //TODO: handle exception
537 e.printStackTrace();538 session.getTransaction().rollback();539 }finally{540 session.close();541 }542
543 }544
545
546
547
548
549
550 }