Hibernate还可以将语句写到配置文件中。

<query name="findAll">FROM News AS n WHERE n.title LIKE ?</query>

通过程序读取配置文件,取得这段HQL,并生成Query对象,完成查询。

Query query = HibernateSessionFactory.getSession().getNamedQuery("findAll");query.setString(0, "%测试%");return query.list();

这种方式在MyBATIS框架中普遍使用,在Hibernate中一般很少这样做。

3.1.2、Criteria查询(了解)

Criteria也是Hibernate提供的一个查询对象,支持按对象的方式来完成查询。

例如:

查询全部功能

public List<News> testCriteria() throws Exception {// 根据传入的pojo类型,查询该类型对应的全部数据Criteria c = HibernateSessionFactory.getSession().createCriteria(News.class);       return c.list();}

如果想加入查询条件,需要使用Restrictions的各种方法来完成条件的拼写。

public List<News> testCriteria() throws Exception {// 根据传入的pojo类型,查询该类型对应的全部数据Criteria c = HibernateSessionFactory.getSession().createCriteria(News.class);// 1、WHERE id = 26// c.add(Restrictions.eq("id", 26));// 2、WHERE id > 26// c.add(Restrictions.gt("id", 26));// 3、WHERE id < 26// c.add(Restrictions.lt("id", 26));// 4、WHERE id >= 26// c.add(Restrictions.ge("id", 26));// 5、WHERE id <= 26// c.add(Restrictions.le("id", 26));// 6、WHERE id <> 26// c.add(Restrictions.ne("id", 26));// 7、WHERE title LIKE '%测试%'// c.add(Restrictions.like("title", "%测试%"));// 8、WHERE id between 23 and 27// c.add(Restrictions.between("id", 23, 27));// 9、WHERE id IN (23,25,27)// List<Integer> allIds = new ArrayList<Integer>();// allIds.add(23);// allIds.add(25);// allIds.add(27);// c.add(Restrictions.in("id", allIds));// 10、复杂条件,需要使用and或or来连接各个条件// WHERE id = 23 OR (id <> 26 AND title LIKE '%测试%')c.add(Restrictions.or(Restrictions.eq("id", 23), Restrictions.and(Restrictions.ne("id", 26), Restrictions.like("title", "%测试%"))));return c.list();}

如果想加入ORDER BY排序条件,需要使用Order对象。

c.addOrder(Order.desc("id"));

如果想加入统计函数和分组函数,则需要用到Projection这个类

ProjectionList pro = Projections.projectionList();// 加入统计函数pro.add(Projections.rowCount());// 还可以加入分组条件pro.add(Projections.groupProperty("title"));c.setProjection(pro);

转载于:https://blog.51cto.com/chenshenglong/1367471

Hibernate查询技术(2)相关推荐

  1. (详细)Hibernate查询技术(Query、Session、Criteria),Hibernate的三种状态,Hibernate集合struts2实现登录功能(二)

    一.Hibernate的三种查询方式(掌握) Hibernate中提供了三种查询方式: 1)Session的查询:按主键查询查询,方法为get或load 2)Query的查询:使用HQL语句或SQL语 ...

  2. Hibernate查询技术之HQL语句

    1.session中的get( )和load( )方法来查询对象.但其查询功能有限. private void testGet(){//1.初始化,读取配置文件hibernate.cfg.xmlCon ...

  3. 从零打造在线网盘系统之Hibernate查询与更新技术

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  4. Hibernate查询性能优化技巧

    数据库查询性能的提升也是涉及到开发中的各个阶段,在开发中选用正确的查询方法无疑是最基础也最简单的. SQL语句的优化 使用正确的SQL语句可以在很大程度上提高系统的查询性能.获得同样数据而采用不同方式 ...

  5. 实验五 oracle高级数据查询技术

    实验五 oracle高级数据查询技术 实验目的:  一.掌握日期型数据的操作技术  二.掌握层次查询技术  三.理解情景查询与翻译查询技术  四.了解统计查询技术 实验内容: 一.日期型数据的操作   ...

  6. php拼音模糊查询,PHP模糊查询技术实例分析【附源码下载】

    本文实例讲述了PHP模糊查询技术.分享给大家供大家参考,具体如下: 简介 从本质上揭密PHP模糊查询技术 功能 根据输入的关键字查找相关用户 PHP用户查询器案例分析 课程目标 掌握PHP模糊技术的应 ...

  7. DotNET企业架构应用实践-系统架构与性能-缓存技术与ORM中的缓存查询技术

    系列回顾 在前面的文章DotNET企业架构应用实践-系统架构与性能-理论依据及相关做法一文中我介绍了系统性能优化的理论做了一个概括的介绍,也简单的介绍了性能优化的过程及相关的技术关注点或者说是做法. ...

  8. iBATIS In Action:使用高级查询技术(一)

    可以考虑根据对象的关系(关联)来定义数据模型,然后使用iBATIS将它们一起加载.例如,如果在数据库中,Account记录对应着相关的Order记录,而Order又对应着相关的OrderItem记录, ...

  9. 如何查询当前表空间下所有实例_详解人大金仓MPP数据库并行查询技术

    什么是MPP数据库? 人大金仓MPP数据库的 并行查询技术原理是什么? 如何实现并行查询?性能如何? 且听以下详细分解~ 01 什么是人大金仓MPP数据库? KingbaseAnalyticsDB(简 ...

最新文章

  1. 迭代3:UC1,UC2的2.1 业务建模 2.2 UC2用例模型 2.3 UC2补充性规格说明
  2. 【转】Maven实战(八)---模块划分
  3. Kafka 详解(二)------集群搭建
  4. java 解析tgw_给Java新手的一些建议——Java知识点归纳(Java基础部分)
  5. 目标跟踪算法之DSST算法详解
  6. C# object 转 int
  7. Pycharm返回上一次编辑处的快捷键
  8. 软件测试质量报告模板,软件质量报告模板-产品质量度量
  9. linux下替代windows的软件列表
  10. 特拉华大学计算机专业怎么样,2019上海软科世界一流学科排名计算机科学与工程专业排名特拉华大学排名第201-300...
  11. html复杂表格,横向多级表头,纵向多级表头,合并行或列
  12. excel公式不自动计算_Excel自动计算怎么设置
  13. Linux攻关之基础模块五 Vim
  14. Java switch 详解
  15. Allegro如何使用Snake命令走蛇形线操作指导
  16. tomcat配置BIO,NIO和APR
  17. 谷歌程序员年薪高达25万美元以上
  18. kube-proxy ipvs模式
  19. stm32学习笔记-1 STM32简介
  20. tabLayout+viewPager+fragment,当tab数目较少,能一屏展示时

热门文章

  1. python基本数据类型(一)-python3.0学习笔记
  2. iptables 之 REJECT 与 DROP 对比
  3. Mysql 基础语法
  4. C# 数组、ArrayList、List、Dictionary的用法与区别
  5. Android设为系统默认的短信应用
  6. vim 查找匹配字符串次数
  7. python3中报错的解决方法(长期更新)
  8. IOS Socket 01-网络协议基础知识
  9. MySQL(MariaDB)的 SSL 加密复制
  10. 实用防火墙(Iptables)脚本分析