文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu 安装ssh服务以及开启root用户ssh登录

一、安装ssh服务 安装ssh服务 sudo apt-get update sudo apt-get install openssh-server 安装完成后启动ssh服务 sudo service ssh start 二、开启root用户ssh登录 解决root远程ssh不能登录,...

15834278076
16分钟前
1
0
AndroidRX

1.延时并切换回主线程执行 Observable.just(true).delay(2, TimeUnit.SECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Boolean>() { [@Override](https://my.......

我是菜鸟我骄傲
44分钟前
1
0
申请Let's Encrypt永久免费SSL证书

环境安装 1、安装git yum install git-core 2、安装python 系统自带 不用安装 只要版本大于2.7即可。 获取Let's Encrypt免费SSL证书 先停止nginx 在阿里云安全组里加入 443端口的入规则 git ...

HGMrWang
52分钟前
2
0
如何使用playframework进行更好的开发

1: 自定义基类Controller 相信刚开始使用Play的人写的Controller 都继承于 play.mvc.Controller , 但这并不是一个很好的选择,自建基类Controller可以扩展更多的功能。 1.1 验证功能。 后台...

tuerqidi
56分钟前
8
0
《JavaScript高级程序设计(第3版)》阅读笔记

第6章 面向对象的程序设计 6.2 创建对象 6.2.1 工厂模式 JavaScript创建对象(一)—— 工厂模式 6.2.2 构造函数模式 JavaScript创建对象(二)——构造函数模式 6.2.3 原型模式 JavaScript...

Bob2100
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部