文档章节

SSH入门系列10:初窥HQL

O
 ORZ你好
发布于 2017/08/12 16:12
字数 582
阅读 4
收藏 0

HQL完整的语句格式如下:

Select/update/delete…… from …… where …… group by …… having …… order by …… asc/des 非常类似于SQL语句。常见的有如下几种

1:实体查询

Configuration configure = new   Configuration().configure();
        SessionFactory  sessionFactory = configure.buildSessionFactory();
        Session session =  sessionFactory.openSession();

        String hql="from Books";
        List list = session.createQuery(hql).list();
        Iterator it = list.iterator();
        while (it.hasNext()) {
            Books books = (Books)it.next();
            System.out.println(books.getAuthor());
        }
        
    }

2:属性查询

    Configuration configure = new   Configuration().configure();
        SessionFactory  sessionFactory = configure.buildSessionFactory();
        Session session =  sessionFactory.openSession();

         //此处as 可删
        String hql="select books.author,books.title from Books as books";
         //无法按照下面的模式写 会报could not resolve property 错误
        //String hql ="select Books.title , Books.author form Books";
        List list = session.createQuery(hql).list();
        Iterator iter = list.iterator();
        while (iter.hasNext()) {
            /*Books books = (Books)iter.next();
            System.out.println(books.getAuthor());
            System.out.println(books.getTitle());
            Ljava.lang.Object; cannot be cast to com.model.Books
            */
            Object[] object = (Object[])iter.next();
            System.out.println(object[0]);
            System.out.println(object[1]);
        }

3按照参数位置进行查询:

       Configuration configure =new Configuration().configure();
         SessionFactory  sessionFactory = configure.buildSessionFactory();
         Session  session = sessionFactory.openSession();
         String hql ="from Books books where books.title like ?" ;
         Query query = session.createQuery(hql);
         query.setString(0, "%C++Primer%");
         List list = query.list();
         Iterator iter = list.iterator();
         while (iter.hasNext()) {
        Books books = (Books)iter.next();
        System.out.println(books.getAuthor());
        }

4按照参数名字进行查询:

Configuration configure =new Configuration().configure();
         SessionFactory  sessionFactory = configure.buildSessionFactory();
         Session  session = sessionFactory.openSession();
        //=后面必须加:  同时setString不能改为books.Title
        //经试验,下面一种方法不可以
         //String hql ="from Books books where books.title=C++Primer ";
         String hql = "from Books books where books.title=:bookTitle";
         Query query = session.createQuery(hql);
         query.setString("bookTitle", "C++Primer");
         List list = query.list();
         Iterator iter = list.iterator();
         while (iter.hasNext()) {
        Books books = (Books)iter.next();
        System.out.println(books.getAuthor());
        }

5连接查询

Configuration configure =new Configuration().configure();
         SessionFactory  sessionFactory = configure.buildSessionFactory();
         Session  session = sessionFactory.openSession();
        String hql = " select b from Books b, Publishers p  where b.publishers=p  and p.name='清华大学出版社'";
    
         //经试验,下面一种方法不可以
        // String hql ="from Books books where books.title=C++Primer ";
         Query query = session.createQuery(hql);
        //query.setString("bookTitle", "C++Primer");
         List   list = query.list();
        Iterator itor = list.iterator();
         while (itor.hasNext()) {
            Books books = (Books)itor.next();
            System.out.println(books.getAuthor()+"     "+books.getTitle());    
                }

6进行升序降序

 Configuration configure =new Configuration().configure();
         SessionFactory  sessionFactory = configure.buildSessionFactory();
         Session  session = sessionFactory.openSession();
        String hql = " from Books b order by b.title asc";
          //经试验,下面一种方法不可以
        // String hql ="from Books books where books.title=C++Primer ";
         Query query = session.createQuery(hql);
        //query.setString("bookTitle", "C++Primer");
        // query.setFirstResult(0);
        // query.setMaxResults(3);
         List   list = query.list();
        Iterator itor = list.iterator();
         while (itor.hasNext()) {
            Books books = (Books)itor.next();
            System.out.println(books.getAuthor()+"     "+books.getTitle());    
                }

7聚集函数:需要加入uniqueResult

 Configuration configure =new Configuration().configure();
         SessionFactory  sessionFactory = configure.buildSessionFactory();
         Session session = sessionFactory.openSession();
         String hql =" select count(b) from  Books b";
         Query query = session.createQuery(hql);
         Long count = (Long)query.uniqueResult();
         System.out.println("图书总数是"+count.toString());
         String hql1 = "select avg(b.unitPrice)  from Books b";
         Query query1 = session.createQuery(hql1);
         Double  price = (Double)query1.uniqueResult();
         System.out.println("平均价格是"+price.toString());
         String hql2 = "select max(b.unitPrice)  from Books  b";
         Query query2 = session.createQuery(hql2);
        Integer MaxPrice = (Integer)query2.uniqueResult();
         System.out.println("最高价格是:"+MaxPrice.toString());
         String hql3 = "select min(b.unitPrice) from Books b";
         Query query3 = session.createQuery(hql3);
         Integer MinPrice = (Integer)query3.uniqueResult();
         System.out.println("最小价格是"+MinPrice.toString());

© 著作权归作者所有

共有 人打赏支持
O
粉丝 0
博文 15
码字总数 8932
作品 0
南京
【备忘】2017最新妙味课堂VIP视频教程全套 无加密

下载地址 http://www.ai998.cn/thread-1107-1-1.html 【备忘】2017最新妙味课堂VIP视频教程全套 无加密 课程大纲 01:PhotoShop基础 02:代码入门篇 03:HTML5基础 04:HTML5高级 05:HTML+...

qq_38155396
2017/08/30
0
0
用js来实现那些数据结构及算法—目录

  首先,有一点要声明,下面所有文章的所有内容的代码,都不是我一个人独立完成的,它们来自于一本叫做《学习JavaScript数据结构和算法》(第二版),人民邮电出版社出版的这本书。github代...

zaking
05/10
0
0
Jenkins入门系列

enkins 是一个可扩展的持续集成引擎。 主要用于: l 持续、自动地构建/测试软件项目。 l 监控一些定时执行的任务。 Jenkins拥有的特性包括: l 易于安装-只要把jenkins.war部署到servlet容器...

harries
2016/04/21
218
0
Jenkins入门系列

Jenkins 是一个可扩展的持续集成引擎。 主要用于: l 持续、自动地构建/测试软件项目。 l 监控一些定时执行的任务。 Jenkins拥有的特性包括: l 易于安装-只要把jenkins.war部署到servlet容器...

外星人et59
2016/04/21
0
0
《Java 系列》- 目录

基础 《Java基础 系列》 - 反射 《Java基础 系列》 - 枚举 《Java基础 系列》 - JDBC 《Java基础 系列》 - JDK动态代理 《Java基础 系列》 - CGLIB字节码代理 《Java基础 系列》 - 注解 多线...

Kimisme
2017/12/29
11
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Ubuntu18.04 显卡GF-940MX安装NVIDIA-390.77

解决办法: 下面就给大家一个正确的姿势在Ubuntu上安装Nvidia驱动: (a)首先去N卡官网下载自己显卡对应的驱动:www.geforce.cn/drivers (b)下载后好放在英文路径的目录下,怎么简单怎么来...

AI_SKI
今天
1
0
深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
今天
1
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
今天
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
3
0
openJDK之sun.misc.Unsafe类CAS底层实现

注:这篇文章参考了https://www.cnblogs.com/snowater/p/8303698.html 1.sun.misc.Unsafe中CAS方法 在sun.misc.Unsafe中CAS方法如下: compareAndSwapObject(java.lang.Object arg0, long a......

汉斯-冯-拉特
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部