文档章节

SSH入门系列10:初窥HQL

O
 ORZ你好
发布于 2017/08/12 16:12
字数 582
阅读 7
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

Deepin 安装wireshark抓包工具

一、关于deepin和wireshark deepin目前已经发展到15.8了,开发Android毫无压力,在四个月的使用时间里,已经非常习惯了。目前想处理一些网络问题,因此尝试在deepin上安装一个抓包工具。dee...

IamOkay
43分钟前
6
0
Docker镜像仓库服务-Nexus

建立云原生集群系统,建立自己的私有Docker镜像仓库必不可少。一方面可以加快多节点部署容器镜像的下载速度,另一方面是为了安全(容器里存储有系统所有的信息、包括密码、数据库等等,切记不...

openthings
55分钟前
3
0
127.0.0.1 和 0.0.0.0 地址的区别

1. IP地址分类 1.1 IP地址表示 IP地址由两个部分组成,net-id和host-id,即网络号和主机号。 net-id:表示ip地址所在的网络号。 host-id:表示ip地址所在网络中的某个主机号码。 即: IP-a...

华山猛男
今天
23
0
解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.

把 总项目 下的 build.gradle 中的 两个 jcenter() 用 maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/’} 代替。...

lanyu96
今天
6
0
基于redis的分布式锁

redisson提供了基于redis的分布式锁实现方式,本文就尝试了下锁的使用方式。Redisson同时还为分布式锁提供了异步执行的相关方法,第二节执行介绍。 一、可重入锁验证 同一个jvm里面同一线程的...

noob_chr
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部