文档章节

SSH入门系列10:初窥HQL

O
 ORZ你好
发布于 2017/08/12 16:12
字数 582
阅读 4
收藏 0
点赞 0
评论 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
博文 12
码字总数 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

Jenkins入门系列

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

外星人et59 ⋅ 2016/04/21 ⋅ 0

Jenkins入门系列

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

harries ⋅ 2016/04/21 ⋅ 0

MongoDB资料汇总专题

MongoDB资料汇总专题 1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoDB的介绍PPT MongoDB:下一代MySQL? 写给P...

点心木易 ⋅ 2012/11/26 ⋅ 0

《Java 系列》- 目录

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

Kimisme ⋅ 2017/12/29 ⋅ 0

Linux目录(Centos)

easy808 ⋅ 2017/12/01 ⋅ 0

【资料大放送】105页PPT|迈进战略发展部,数据驱动业绩增长——经营分析实战攻略

本文是天善智能签约讲师 陈老师 的课程 迈进战略发展部,数据驱动业绩增长——经营分析实战攻略 课件,未经允许,禁止转载。 推荐课程: 迈进战略发展部,数据驱动业绩增长——经营分析实战攻...

天善智能 ⋅ 2017/11/20 ⋅ 0

SSH中执行HQL语句的org.hibernate.hql.internal.ast.QuerySyntaxException问题

SSH框架中,执行的HQL语句如下: List list = weekService.query("from 表名 w where w.username='"+username+"' and w.hostname="+hostname+" and w.meetingDate="+meetingDate); 控制台报错如......

Mr_Da ⋅ 2015/06/19 ⋅ 1

Git版本控制教程

Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版)。 一份很好的 Git 入门教程,点击这里查看。 Git客户端下载地址: 官方Git - TortoiseGit - SourceTree 常用工具及插件教程...

切切歆语 ⋅ 2016/12/13 ⋅ 0

“软件测试系列”视频课程的学生评价

因为各位朋友的支持与期待下,“软件测试系列”终身会员卡终于正式上线了!! 终身会员卡地址:http://edu.51cto.com/member/id-6.html 视频课程主心:http://edu.51cto.com/lecturer/user_...

hblxp321 ⋅ 2014/07/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部