Hibernate笔记

1、           Hibernate里的sql语句查询

MyEclipse里安装完Hibernate框架后,生成一个HibernateSessionFactory.java的文件。用该类可以完成sql语句查询。

源代码:

  Session session = HibernateSessionFactory.getSession();//创建一个会话,注意这里的session代表数据库的连接,相当于jdbc中的connection

  Query sqy = session.createSQLQuery(“select * from emp”);//根据会话对象创建语句分析器,Query相当于jdbc中的Statement

  List list = sqy.list();

  System.out.println(list.get(0))

2、           Hibernate里的HQL语句查询

源代码:

  Session session = HibernateSessionFactory.getSession();

  Query q = session.createQuery(“from com.sun.demo.Userinfo”);

  List list = q.list();

  For(int i=0;i<list.size();i++){

    System.out.println(list.get(i));

 }

 HibernateSessionFactory.closeSession();

3、           MyEclipse里调试程序时,可以把鼠标放在某一个变量上面,点右键-display查看该变量的具体类型信息。

4、           HQL中查询某一对象的多个属性值,并显示该属性值

Session session = HibernateSessionFactory.getSession();

      Query q = session.createQuery(“select u.id,u.name from com.sun.demo.Userinfo u”);

      List list = q.list();

      For(int i=0;i<list.size();i++){

         Object[] str = (Object[])list.get(i);//查询多个属性的时候,返回的是一个 object数组的list

       System.out.println(“-----”+str[0]+”:”+str[1]);

      }

      HibernateSessionFactory.closeSession();

5HQL直接将查询结果生成对象

     Session session = HibernateSessionFactory.getSession();

      Query q = session.createQuery(“select new com.sun.demo.Emp(u.id,u.name ,to_char(sysdate,’yyyy-mm-dd’)) from com.sun.demo.Userinfo u”);

      List list = q.list();

      For(int i=0;i<list.size();i++){

         Emp emp = (Emp)list.get(i);//查询多个属性的时候,返回的是一个 object数组的list

       System.out.println(“-----”+emp.getID()+”:”+emp.getName());

      }

      HibernateSessionFactory.closeSession();

 

5、           常用的HQL语句

   (1)Session.createQuery(“from  Userinfo u where u.userid>1003”);

(2)Session.createQuery(“from  Userinfo u where

 to_number(u.userid)>1003”);

(3) Session.createQuery(“from  Userinfo u where u.userid>1003 and u.username like ’_a’”);//第二个字母是a的名字

(4) Session.createQuery(“select max(u.userid) from  Userinfo u where u.userid>1003”);

(5) Session.createQuery(“select count(*) from  Userinfo u where u.userid>1003”);

(6) Session.createQuery(“SELECT AVG(sal) from  Userinfo Group by deptno);//其中的sal,deptno必须是类Userinfo的属性,如果不是,则需要在类Userinfo里边加入该属性值,并且为该属性值加入getset方法,对应的sql语句查询为select avg(SAL) from USERINFO group by DEPTNO,其中USERINFO为表名,SALDEPTNO为字段名。

7)、Session.createQuery(“SELECT round(avg(age) from  Userinfo Group by sex);//round()函数是四舍五入

8)、Session.createQuery(“SELECT u from  Userinfo  u where age>(select avg(age)  from Userinfo);//不能是select * ,HQL语句不支持select *;

(9)session.createQuery(“select  o from Object o”);//会把存在的类Userinfo的信息给查出来,因为存在这继承关系

 

 

 

 






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值