packagecom.cy.service;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.junit.After;importorg.junit.Before;importorg.junit.Test;importcom.cy.model.Student;importcom.cy.util.HibernateUtil;public classStudentTest {private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();privateSession session;
@Beforepublic void setUp() throwsException {
session=sessionFactory.openSession();
session.beginTransaction();
}
@Afterpublic void tearDown() throwsException {
session.getTransaction().commit();
session.close();
}/*** 本地sql查询,不带参数*/@Testpublic voidtestSQLQuery(){
String sql= "select * from t_student";
Query query= session.createSQLQuery(sql).addEntity(Student.class); //查询student,绑定Student实体
List studentList =query.list();for(Student s: studentList){
System.out.println(s);
}/*** Hibernate: select * from t_student
Student [id=1, name=张三, age=10]
Student [id=2, name=李四, age=15]
Student [id=3, name=王五, age=13]*/}/*** 本地sql查询,带参数
* 查询姓名张开头,且10岁*/@Testpublic voidtestSQLQuery2(){
String sql= "select * from t_student where stuName like :stuName and stuAge = :stuAge";
Query query= session.createSQLQuery(sql).addEntity(Student.class); //查询student,绑定Student实体
query.setString("stuName", "张%");
query.setInteger("stuAge", 10);
List studentList =query.list();for(Student s: studentList){
System.out.println(s);
}/** Hibernate: select * from t_student where stuName like ? and stuAge = ?
Student [id=1, name=张三, age=10]*/}/*** HQL查询*/@Testpublic voidtestHQLQuery(){
String hql= "from Student";
Query query=session.createQuery(hql);
List studentList =query.list();for(Student s : studentList){
System.out.println(s);
}/** Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_
Student [id=1, name=张三, age=10]
Student [id=2, name=李四, age=15]
Student [id=3, name=王五, age=13]*/}/*** HQL 带条件查询*/@Testpublic voidtestHQLQuery2(){
String hql= "from Student where name like :stuName and age = :stuAge ";
Query query=session.createQuery(hql);
query.setString("stuName", "张%");
query.setInteger("stuAge", 10);
List studentList =query.list();for(Student s : studentList){
System.out.println(s);
}/** Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ where (student0_.stuName like ?) and student0_.stuAge=?
Student [id=1, name=张三, age=10]*/}/*** HQL 使用别名
* from Student as s
* 或者
* from Student s*/@Testpublic voidtestHQLQuery3(){
String hql="from Student as s where s.name like :stuName and s.age=:stuAge";
Query query=session.createQuery(hql);
query.setString("stuName", "张%");
query.setInteger("stuAge", 10);
List studentList=query.list();for(Student s : studentList){
System.out.println(s);
}
}/*** HQL查询 对结果排序
* 按照年龄降序排列*/@Testpublic voidtestHQLQuery4(){
String hql= "from Student order by age desc";
Query query=session.createQuery(hql);
List studentList =query.list();for(Student s : studentList){
System.out.println(s);
}/** Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ order by student0_.stuAge desc
Student [id=2, name=李四, age=15]
Student [id=3, name=王五, age=13]
Student [id=1, name=张三, age=10]*/}/*** HQL查询 分页查询*/@Testpublic voidtestHQLQuery5(){
String hql="from Student";
Query query=session.createQuery(hql);//第1条记录开始,取2条;
query.setFirstResult(1);
query.setMaxResults(2);
List studentList =query.list();for(Student s : studentList){
System.out.println(s);
}/** Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ limit ?, ?
Student [id=2, name=李四, age=15]
Student [id=3, name=王五, age=13]*/}/*** HQL查询 查询单个对象
* 查询出一条记录,完全能确定是一条记录,这里就不是list了,uniqueResult
* 比如查询总记录数,就可以用uniqueResult*/@Testpublic voidtestHQLQuery6() {
String hql="from Student";
Query query=session.createQuery(hql);
query.setFirstResult(1);
query.setMaxResults(1);
Student s=(Student) query.uniqueResult();
System.out.println(s);/** Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ limit ?, ?
Student [id=2, name=李四, age=15]*/}/*** HQL 链式写法*/@SuppressWarnings("unchecked")
@Testpublic voidtestHQLQuery7() {
String hql= "from Student s where s.name like :stuName and s.age = :stuAge";
List studentList =session.createQuery(hql)
.setString("stuName", "李%")
.setInteger("stuAge", 15)
.list();for(Student s : studentList){
System.out.println(s);
}/** Student [id=2, name=李四, age=15]*/}
}