- 浏览: 245583 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
javatozhang:
讲解的的确不错。很实用。
Hibernate数据拦截与事件监听 -
sjx19871109:
更正一个地方:<event type="pos ...
Hibernate search -
xifan:
你好,楼主。
mutable="false 好像是 ...
Hibernate持久化对象生命周期 -
leo_cao:
很好,很实用
Hibernate数据拦截与事件监听 -
fehly:
47816778 写道你这样不会出现number 的精度问题吗 ...
Hibernate Annotations
Hibernate的三种查询方式
1.HQL (Hibernate Query Lanuage) 语句,这是类似SQL语句的一种对象化查询语句.
2.使用Criteria对象,进行按条件查询(Query by Criteria,简称QBC)和按示例查询(Query by Example 简称QBE).
3.生成原生的sql(Native SQL)语句.
Criteria的基本使用
Transaction tx = session.beginTransaction(); Criteria criteria = session.createCriteria(Testbook.class); List<Testbook> list=criteria.list(); tx.commit();
查询Testbook 中所有的数据,然后返回 Criteria 接口的核心方法
add() 增加一个代表查询条件的Criterion对象
addOrder() 增加一个代表排序的Criterion对象
createAlias() 创建关联查询,为所关联的持久化类建立别名
createCriteria() 在相互关联的持久化类之间建立条件约束
setFirstResult() 设定要获取的第一条记录的位置
setMaxResults() 设定要获取的记录的最大数量
list() 获取满足查询条件的记录的集合
uniqueResult() 获取满足查询条件的唯一记录
对查询结果进行排序
Transaction tx = session.beginTransaction(); Criteria criteria = session.createCriteria(Testbook.class).add( Restrictions.like("name","任%")).add(Restrictions.between("id",1000,1010)); criteria.addOrder(Order.desc("id")).addOrder(Order.asc("createdTime")); List<Testbook> list=criteria.list(); tx.commit();
实现分页显示数据
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Testbook.class).add(
Restrictions.like("name","任%"));
criteria.addOrder(Order.desc("id"));
criteria.setMaxResults(30);
criteria.setFirstResult(10);//setFirstResult()从0开始计数
List<Testbook> list=criteria.list();
tx.commit();
只查询一条记录
Restrictions类
<----------------------------------------------------------------------------------------------------------->
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Testbook.class).add(
Restrictions.like("name","任%"));
criteria.addOrder(Order.desc("id"));
criteria.setMaxResults(1);
Testbook tb=(Testbook)criteria.uniqueResult();
tx.commit();
条件"或"方式组合查询条件
Transaction tx = session.beginTransaction();
Criteria criteria=session.createCriteria(Testbook.class);
Criterion criterion1=Restrictions.or(Restrictions.like("name","任%"),
Restrictions.between("id",1000,1010));
criteria.add(criterion1);
List<Testbook> list=criteria.list();
tx.commit();
使用原生SQL语句设定查询条件
统计函数查询Transaction tx = session.beginTransaction();
Criteria criteria=session.createCriteria(Testbook.class);
criteria.add(Restrictions.sqlRestriction("{alias}.name=?","Narcissus",Hibernate.STRING));
List<Testbook> list=criteria.list();
tx.commit()
Transaction tx = session.beginTransaction(); Criteria criteria=session.createCriteria(Testbook.class); criteria.setProjection(Projections.max("price")); Double maxValue=(Double)criteria.uniqueResult(); tx.commit(); System.out.println(maxValue);
统计函数组合查询条件 Transaction tx = session.beginTransaction();
Criteria criteria=session.createCriteria(Testbook.class);
criteria.setProjection(Projections.max("price"));
Double maxValue=(Double)criteria.uniqueResult();
tx.commit();
System.out.println(maxValue);
获取多个统计函数的值
Transaction tx = session.beginTransaction();
Criteria criteria=session.createCriteria(Testbook.class);
ProjectionList proList=Projections.projectionList();
proList.add(Projections.max("price"));
proList.add(Projections.min("price"));
proList.add(Projections.avg("price"));
proList.add(Projections.sum("price"));
proList.add(Projections.count("price"));
proList.add(Projections.countDistinct("price"));
proList.add(Projections.rowCount());
criteria.setProjection(proList);
Object values[]=(Object[])criteria.uniqueResult();
tx.commit();
分组查询 Transaction tx = session.beginTransaction();
Criteria criteria=session.createCriteria(Testbook.class);
criteria.setProjection(Projections.groupProperty("price"));
List<Double> list=criteria.list();
tx.commit();
分组统计
Transaction tx = session.beginTransaction();
Criteria criteria=session.createCriteria(Testbook.class);
ProjectionList proList=Projections.projectionList();
proList.add(Projections.rowCount());//商品的个数
proList.add(Projections.sum("price"));
proList.add(Projections.groupProperty("name"));
criteria.setProjection(proList);
List<Double> list=criteria.list();
tx.commit();
投影查询
在一个表中有很多个字段,投影查询只是查询某一个或多个字段,也称局部查询
Transaction tx = session.beginTransaction(); Criteria criteria=session.createCriteria(Testbook.class); criteria.setProjection(Property.forName("price")); criteria.add(Restrictions.gt("price",new Double(40.0))) List<Double> list=criteria.list(); tx.commit();
使用Property类的forName()方法实现分组统计
使用DetachedCriteria对象实现离线查询Transaction tx = session.beginTransaction();
Criteria criteria=session.createCriteria(Testbook.class);
ProjectionList proList=Projections.projectionList();
proList.add(Projections.forName("price").max());
proList.add(Projections.forName("price").min());
proList.add(Projections.forName("price").avg());
proList.add(Projections.forName("category.id").group().as("c"));
criteria.setProjection(proList);
criteria.addOrder(Order.desc("c"));
List<Object[]> list=criteria.list();
tx.commit();
//在表现层,构造DetachedCriteria对象,保存用户动态的查询条件 DetachedCriteria detchedCriteria=DetachedCriteria.forClass(Testbook.class); detchedCriteria.add(Restrictions.like("name","任%")).add(Restrictions.between("id",new Integer(1),new Integer(10))); detchedCriteria.addOrder(Order.desc("id")); //在业务逻辑层,DetachedCriteria对象与当前的Session对象进行绑定,获取查询结果 Session session=HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession(); Transaction tx=detchedCriteria.getExecutableCriteria(session); List<Testbook> list=criteria.list(); tx.commit();
根据示例对象进行查询
先定义一个模板然后把这个模板的样式传进去,查询,例如这里定义的Testbook中的名字为Narcissus的字段,进行查询,条件可以为一个也可以为多个,对应的就是where中的条件
Testbook tb=new Testbook(); tb.setName("Narcissus"); Session session=HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); Criteria criteria=session.createCriteria(Testbook.class); Criteria.add(Example.creaate(tb)); List<Testbook> list=criteria.list(); tx.commit();
评论
Java代码
Transaction tx = session.beginTransaction();
Criteria criteria=session.createCriteria(Testbook.class);
ProjectionList proList=Projections.projectionList();
proList.add(Projections.forName("price").max());
proList.add(Projections.forName("price").min());
proList.add(Projections.forName("price").avg());
proList.add(Projections.forName("category.id").group().as("c"));
criteria.setProjection(proList);
criteria.addOrder(Order.desc("c"));
List<Object[]> list=criteria.list();
tx.commit();
这位大哥,上边写的对到下边怎么错了,。
发表评论
-
Hibernate与Struts2,Spring
2010-04-25 19:23 1515Struts2 框架 Struts是Apache ... -
Hibernate search
2010-04-22 15:28 6170搜索引擎 全文搜索引 ... -
Hibernate Annotations
2010-04-21 14:54 6968在过去几年里,Hibernate不断发展,几乎成为Jav ... -
Hibernate性能优化
2010-04-20 16:25 1359使用dynamic-insert与dynamic-update ... -
Hibernate的缓存
2010-04-19 19:47 1989持久层缓存的级别 事务级别的缓存 应用(进程)级别的缓存 ... -
Hibernate数据拦截与事件监听
2010-04-17 19:33 6466拦截器(Interceptor)org.hibernate.I ... -
Hibernate过滤器
2010-04-16 17:31 1457Hibernate过滤器的概念 Hibernate过滤器类 ... -
Hibernate继承映射
2010-04-15 19:48 987继承映射 3种方式,继承关系映射到数据库的表中 1.继承关 ... -
Hibernate的事务管理
2010-04-14 20:00 1283数据库事务数据库的事务指的是把一系列的数据库操作组成一个单元, ... -
Native SQL查询
2010-04-13 23:15 1185HQL写的有点累有些东西 ... -
HQL查询
2010-04-13 20:46 1492Query接口Query类型与org.hibernate.Cr ... -
映射多对多关联关系
2010-04-10 15:19 1325多对多单向关联 使用多对多关联,需要借助一个起中介作用的连接 ... -
映射一对一关联关系
2010-04-09 21:08 941共享主键关系 两个关联表使用相同的主键值 类: ... -
Hibernate映射多对一关联关系
2010-04-08 15:03 1419多对一的单向关联 表于表的关联可以分为一对一,一对多,多对一 ... -
Hibernate组件映射
2010-04-07 16:03 5191组件Components 除了粗粒度的对象模型设计(一个表 ... -
Hibernate的集合映射
2010-04-06 15:31 1206Set 接口 set类型的对象,被加入的对象不能重复, ... -
浅谈OSIV与泛型DAO模式
2010-04-05 22:13 3560open session in view 简称 O ... -
java.lang.NoClassDefFoundError: org/hibernate/Session的异常
2010-03-22 15:15 7057今天写程序突然报这个错误,挺郁闷的,因为这个包是导入别人的(事 ... -
Hibernate持久化对象生命周期
2010-03-19 14:41 2302持久化对象生命周期 Persisten ... -
Hibernate标示符属性的生成策略
2010-03-18 16:53 1476标示符属性 Hibernate中的标示符属性,也可以称为Hi ...
相关推荐
09 Criteria查询方式
Hibernate中的Criteria连表查询,包括单表属性查询,多表内连,以及左外连接查询
1、掌握Hibernate框架应用项目 2、学习HQL参数查询和Criteria查询 3、比较HQL和Criteria的不同 建立web项目,通过页面查询构造动态查询语句,struts2和hibernate框架整合。
Hibernat 使用Criteria查询多对多关系(SET集合)条件
T21.9_Criteria查询 java 经典教程 经典教材
Criteria查询将数据查询条件封装成为一个对象,可以堪称是传统SQL的对象化表示。
Hibernate中关于Criteria查询条件的选择.doc
NULL 博文链接:https://beisicao.iteye.com/blog/955674
绍Hibernate的Criteria 查询方法
主要介绍了Java的Hibernate框架中Criteria查询使用的实例讲解,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
Hibernate-Criteria 模糊查询
Hibernate-Criteria_模糊查询
第一章:Spring Data JPA入门 包括:是什么、能干什么、有什么、HelloWorld等 第二章:JpaRepository基本功能 ... 包括:Specifications基础、 Criteria查询基本概念、 Criteria查询实现、多表联接等内容
这个案例是根据分组查询,并且得到每组的条数,不懂得可以q我:1710086675,欢迎认识更多新朋友
我尝试着模仿hibernate的criteria构建这么一个轻量级查询框架,提供一下特点: 1 可以根据前台传过来的查询数据自动构建查询条件 2 可以生成纯SQl 3 也可以直接使用preparestatement进行查询,返回我们想要的数据。 ...
Criteria标准化对象查询小例子,内有配套的SQL表语句和使用说明
Hibernate常用操作示例,包含详细注释说明,数据库初始化文件。使用和学习请参考:http://blog.csdn.net/daijin888888/article/details/51692942