Hibernate笔记(4)-hql查询与Criteria查询
2016-07-11 23:41
399 查看
普通Hql查询
Query query = session.createQuery(hql) //设置占位符,从0开始 query.setLong(0,4); query.list()
原生SQL查询
将查询出来的每一条记录,封装成一个Object类型的数组,然后把这些数组封装到集合中返回SQLQuery query = session.createSQLQuery(sql); query.setLong(0,4) List<Object[]> lines = query.list();
N+1查询
Iterator<Demo> iter = query.iterate();
模板查询
Demo demo = new Demo(); demo.setName("struts"); Criteria criteria = session.createCriteria(Demo.class).add(Example.create(line)); List<Line> lines = criteria.list();
分页查询
query.setMaxResults(3); query.setFirstResult(5);
将hql语句写在xml中
Query query = session.getNamedQuery("queryDemoById"); query.setLong(0,33) //demo.hbm.xml中 <query name="queryLineById"> <![CDATA[ from Line where id=? ]]> </query>
过滤器查询
session.enableFilter("idFilter").setParameter("myId",241); String hql = "from Demo"; Query query= session.createQuery(hql); //demo.hbm.xml中 <filter name="idFilter" condition="id < :myId"></filter> <filter-def name="idFilter"> <filter-param name="myId" type="java.lang.Long"/> </filter-def>
Criteria模板
org.hibernate.Criteria实际上是个条件附加的容器模板查询其他用法:
//限制结果集内容 session.createCriteria(Demo.class).add(Restrictions.like("name","Fri%"));
//约束按照逻辑分组 session.createCriteria(Demo.class).add(Restrictions.or(Restrictions.eq("age"),new Integer(0)) ); session.createCriteria(Demo.class).add(Restrictions.gt("age", new Integer(20))); session.createCriteria(Demo.class).add(Restrictions.lt("age", new Integer(40)));
方法 说明
Restrictions.eq 等于
Restrictions.allEq 使用Map,使用key/value进行多个等于的比对
Restrictions.gt 大于 >
Restrictions.ge 大于等于 >=
Restrictions.lt 小于 <
Restrictions.le 小于等于 <=
Restrictions.between 对应SQL的BETWEEN子句
Restrictions.like 对应SQL的LIKE子句
Restrictions.in 对应SQL的in子句
Restrictions.and and关係
Restrictions.or or关係
//结果集排序 session.createCriteria(Demo.class).addOrder(Order.asc("name")).setMaxResult();
//投影查询 ProjectionList proList = Projections.projectionList(); proList.add(Projections.groupProperty("name")); proList.add(Projections.groupProperty("id")); ① avg(String propertyName):计算属性字段的平均值。 ② count(String propertyName):统计一个属性在结果中出现的次数。 ③ countDistinct(String propertyName):统计属性包含的不重复值的数量。 ④ max(String propertyName):计算属性值的最大值。 ⑤ min(String propertyName):计算属性值的最小值。 ⑥ sum(String propertyName):计算属性值的总和。
相关文章推荐
- 第6章 Java访问控制权限
- Discuz!门户列表页,文章中无图片时,随机选择一张作为封面
- 详解Linux目录(目录树详细解释)
- DOCKER windows 安装Tomcat内容
- IONIC基于windows平台的基础环境搭建
- 软件打包NSIS的使用
- 自定义view
- 每日一题(day5)
- C# 调用C++dll 引发DllNotFoundException
- Python+PyDev+Jdk+Eclipse开发环境部署
- JavaScript 命名空间
- 关于特殊二维数组搜索
- VIJOS P1889 天真的因数分解
- css折叠样式(2)――定义样式表
- 构造器builder
- Android基础----Activity
- TextView中html字符串(带网络图片处理)
- 【转载】推导相机变换矩阵
- 天梯赛2 重现5-4 最长连续递增子序列
- java.text.DecimalFormat