HQL

HQL是Hibernate提供的一种面向对象的查询语言;

具体就是HQL是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性。 HQL 查询被 Hibernate 翻译为传统的 SQL 查询从而对数据库进行操作。

HQL的优点和SQL的区别:

面向对象,与数据库无关
语法与SQL类是,比较容易学习

HQL的用法:

获得HibernateSession对象
编写HQL语句
调用Session的createQuery方法创建Query对象执行HQL语句
如果HQL语句包含参数,则调用Query的setXxx方法为参数赋值
调用Query对象的list等方法返回查询结果。

HQL的一些常用示例
1.无参查询所有

String hql="select t from UserEntity t";
     //获得query对象,并执行hql语句
    Query query = session.createQuery(hql);
    //得到查询结果
     List<UserEntity> list =  query.list();

2,有参查询

String hql="from UserEntity where userName = ?";
     List<UserEntity > list =
       session.createQuery(hql)
               .setParameter(0,"小白")//设置参数替换占位符
               .list();

3,有参查询部分列1

 String hql="select userName,pwd from  UserEntity ";
       //查询结果,每一个Object数组代表一行
        List<Object[]> list =
         session.createQuery(hql).list();

4,有参查询部分列2

String hql="select new map(userName,pwd) from TeacherEntity";
		//查询结果,每个map集合代表结果的一行
        List<Map> list=
         session.createQuery(hql).list();

5,模糊查询

String hql="select new map(userName,pwd) " +
                "from UserEntity where userName like ?";
        List<Map> list = session.createQuery(hql)
        				//传参时,需要加上通配符
                        .setParameter(0,"小%")
                        .list();

6,连表查询

 String hql="select new map(s.studentName,t.teacherName,t.teacherClass) " +
                "from StudentEntity s " +
                " left join s.teacher t where t.teacherName=?";
         List<Map> list=
           session.createQuery(hql)
                   .setParameter(0,"陈老师")
                   .list();

8,分页查询

String hql="from UserEntity where teacherName like ?";
        List<TeacherEntity> list=
                session.createQuery(hql)
                .setParameter(0,"小%")
                .setFirstResult(0) //起始下标
                .setMaxResults(5) //每页显示的行数
                .list();

9,查询单个对象

 String hql="from UserEntity where userName like ?";
      TeacherEntity t=
              (TeacherEntity) session.createQuery(hql)
                      .setParameter(0,"小%")
                      //返回查询的第一条结果
                      .uniqueResult();

10,删除

  String hql="delete from UserEntity  where id = ?";
     int i =   session.createQuery(hql)
                .setParameter(0,3)
                .executeUpdate(); //执行修改、删除返回受影响的行数

11,修改

 String hql="update UserEntityset userName=? where id = ?";
     int i= session.createQuery(hql)
              .setParameter(0,"小青")
              .setParameter(1,5)
              //执行,并返回受影响行数
              .executeUpdate();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值