hibernate的sql查询

傷城~ 2022-08-27 05:50 102阅读 0赞

hibernate有的时候用起来貌似不是那么顺手,像sql查询在hibernate中就是一大缺陷,稍微复杂点的查询hibernate几乎做不到。这次整理了一些关于hibernate使用sql语句查询的知识,就拿出来分享给大家吧

1.map结果类型的sql查询

  1. public void queryBySql() {
  2. Transaction tx=null;
  3. Session ses=null;
  4. try {
  5. ses = HibernateUtil.getSession();
  6. tx = ses.beginTransaction();
  7. String sql="select name from student where sno='2009010502'";
  8. Query q=ses.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
  9. List list = q.list();
  10. for(int i=0;i<list.size();i++){
  11. Map m=(Map)list.get(i);
  12. System.out.println(m.get("NAME"));
  13. }
  14. tx.commit();
  15. } catch (HibernateException e) {
  16. throw e;
  17. }finally{
  18. if(ses!=null){
  19. ses.close();
  20. }
  21. }
  22. }

这种查询还算OK,只不过拿来分页的话就麻烦了

2.addEntity的方式

这种方法我觉得比较适合连接查询的情况,但是无论怎样,hibernate的sql查询就是麻烦

  1. public void queryByEntitySql() {
  2. Transaction tx=null;
  3. Session ses=null;
  4. try {
  5. ses = HibernateUtil.getSession();
  6. tx = ses.beginTransaction();
  7. String sql="select d.*,s.* from dept d,Student s where d.deptno=s.deptno";
  8. Query q=ses.createSQLQuery(sql)
  9. .addEntity("d",Depart.class)
  10. .addEntity("s",Student.class);
  11. List list = q.list();
  12. Iterator it=list.iterator();
  13. while(it.hasNext()){
  14. Object[] obj=(Object[])it.next();
  15. Depart d=(Depart)obj[0];
  16. System.out.println(d.getDname());
  17. }
  18. tx.commit();
  19. } catch (HibernateException e) {
  20. throw e;
  21. }finally{
  22. if(ses!=null){
  23. ses.close();
  24. }
  25. }
  26. }

这种方式的查询有点类似Ibatis的那种连接查询

发表评论

表情:
评论列表 (有 0 条评论,102人围观)

还没有评论,来说两句吧...

相关阅读

    相关 hibernatesql查询

    hibernate有的时候用起来貌似不是那么顺手,像sql查询在hibernate中就是一大缺陷,稍微复杂点的查询hibernate几乎做不到。这次整理了一些关于hiberna