<strong>Hibernate提供了以下几种检索对象的方式</strong>
¨ 导航对象图检索方式: 根据已经加载的对象导航到其他对象
¨ OID 检索方式: 按照对象的 OID 来检索对象
¨ HQL 检索方式: 使用面向对象的 HQL 查询语言
¨ QBC 检索方式: 使用 QBC(Query By Criteria) API 来检索对象. 这种 API 封装了基于字符串形式的查询语句, 提供了更加面向对象的查询接口.
¨ 本地 SQL 检索方式: 使用本地数据库的 SQL 查询语句
HQL检索Demo
package hjds.test; import hjds.domain.privilege.Admin; import hjds.util.HiberSessionFactory; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; public class HQLTest { @Test public void test1(){ //获取session对象 Session session =HiberSessionFactory.getSession(); Class clazz = Admin.class; //hql查询 from 类名 Query query = session.createQuery("from "+clazz.getName()); //获取结果 List<Admin> admins =query.list(); for(Admin admin:admins){ System.out.println(admin.getName()); } HiberSessionFactory.closeSession(); } @Test public void test2(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //获取结果 List<Admin> admins =session.createQuery("from Admin").list(); for(Admin admin:admins){ System.out.println(admin.getName()); } HiberSessionFactory.closeSession(); } @Test public void test3(){ //获取session对象s Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //获取结果 name=? 位置从0开始 Admin admin= (Admin) session.createQuery("from Admin admin where admin.name=?").setString(0, "junjun10").uniqueResult(); System.out.println(admin.getName()); HiberSessionFactory.closeSession(); } @Test public void test4(){ //获取session对象s Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //获取结果 name=:names names Admin admin= (Admin) session.createQuery("from Admin admin where admin.name=:names").setString("names", "junjun10").uniqueResult(); System.out.println(admin.getName()); HiberSessionFactory.closeSession(); } @Test public void test5(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //获取结果 List<Admin> admins =session.createQuery("from Admin admin order by admin.id desc").list(); for(Admin admin:admins){ System.out.println(admin.getName()); } HiberSessionFactory.closeSession(); } @Test public void test6(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //setFirstResult(开始位置).setMaxResult(每页显示的数量); //获取结果 List<Admin> admins =session.createQuery("from Admin admin order by admin.id desc").setFirstResult(0).setMaxResults(3).list(); for(Admin admin:admins){ System.out.println(admin.getName()); } HiberSessionFactory.closeSession(); } @Test public void test7(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //setFirstResult(开始位置).setMaxResult(每页显示的数量); //获取结果 List list =session.createQuery("select admin.name,admin.pass from Admin admin order by admin.id desc").setFirstResult(0).setMaxResults(3).list(); Iterator it = list.iterator(); while(it.hasNext()){ Object obj[]=(Object[]) it.next(); System.out.println(obj[0]); } HiberSessionFactory.closeSession(); } @Test public void test8(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //setFirstResult(开始位置).setMaxResult(每页显示的数量); //获取结果 List list =session.createQuery("select admin.name from Admin admin order by admin.id desc").setFirstResult(0).setMaxResults(3).list(); Iterator it = list.iterator(); while(it.hasNext()){ String name=(String) it.next(); System.out.println("--"+name); } HiberSessionFactory.closeSession(); } @Test public void test9(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //setFirstResult(开始位置).setMaxResult(每页显示的数量); //获取结果 List<Admin> admins =session.createQuery("select new hjds.domain.privilege.Admin(admin.name,admin.pass) from Admin admin order by admin.id desc").setFirstResult(0).setMaxResults(3).list(); for(Admin admin:admins){ System.out.println(admin.getName()); } HiberSessionFactory.closeSession(); } @Test public void test10(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 Class clazz = Admin.class; //setFirstResult(开始位置).setMaxResult(每页显示的数量); //获取结果 long count =(Long) session.createQuery("select count(c) from "+clazz.getName()+" c").uniqueResult(); System.out.println(count); HiberSessionFactory.closeSession(); /* java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer at hjds.test.HQLTest.test10(HQLTest.java:207) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) */ } @Test public void test11(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //setFirstResult(开始位置).setMaxResult(每页显示的数量); //获取结果 int count =session.createQuery("from Admin").list().size(); System.out.println(count); HiberSessionFactory.closeSession(); } @Test public void test12(){ //获取session对象 Session session =HiberSessionFactory.getSession(); //hql查询 from 类名 //setFirstResult(开始位置).setMaxResult(每页显示的数量); //获取结果 Admin admin =(Admin) session.getNamedQuery("findAdminByName").setString("name", "junjun10").uniqueResult(); System.out.println(admin.getPass()); HiberSessionFactory.closeSession(); } @Test public void test13(){ //获取session对象 Session session =HiberSessionFactory.getSession(); Transaction ts = session.beginTransaction(); //hql查询 from 类名 //setFirstResult(开始位置).setMaxResult(每页显示的数量); String delete="delete from Admin a where a.id=:id"; //获取结果 int num=session.createQuery(delete).setInteger("id", 2).executeUpdate(); System.out.println(num); ts.commit(); HiberSessionFactory.closeSession(); } }
package hjds.test; import hjds.domain.privilege.Admin; import hjds.util.HiberSessionFactory; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.junit.Test; public class QBCTest { @Test public void test1(){ Session session =HiberSessionFactory.getSession(); // Criteria criteria =session.createCriteria(Admin.class); List<Admin> admin =criteria.list(); for(Admin adm:admin){ System.out.println(adm.getName()); } HiberSessionFactory.closeSession(); } @Test public void test2(){ Session session =HiberSessionFactory.getSession(); // List<Admin> admin =session.createCriteria(Admin.class).list(); for(Admin adm:admin){ System.out.println(adm.getName()); } HiberSessionFactory.closeSession(); } @Test public void test3(){ Session session =HiberSessionFactory.getSession(); // Admin admin =(Admin) session.createCriteria(Admin.class).add(Restrictions.eq("name", "junjun10")).uniqueResult(); System.out.println(admin.getName()); HiberSessionFactory.closeSession(); } @Test public void test4(){ Session session =HiberSessionFactory.getSession(); // List<Admin> admin=session.createCriteria(Admin.class).setFirstResult(0).setMaxResults(3).list(); for(Admin adm:admin){ System.out.println(adm.getName()); } HiberSessionFactory.closeSession(); } @Test public void test5(){ Session session =HiberSessionFactory.getSession(); // List<Admin> admin=session.createCriteria(Admin.class).setFirstResult(0).setMaxResults(3).addOrder(Order.desc("id")).list(); for(Admin adm:admin){ System.out.println(adm.getName()); } HiberSessionFactory.closeSession(); } @Test public void test6(){ Session session =HiberSessionFactory.getSession(); // List<Admin> admin=session.createSQLQuery("select id,name,pass from admin").addEntity(Admin.class).list(); for(Admin adm:admin){ System.out.println(adm.getName()); } HiberSessionFactory.closeSession(); } @Test public void test7(){ Session session =HiberSessionFactory.getSession(); // Admin admin=(Admin) session.createSQLQuery("select id,name,pass from admin where id=?").addEntity(Admin.class).setInteger(0, 1).uniqueResult(); System.out.println(admin.getName()); HiberSessionFactory.closeSession(); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。