hibernate全部查询方式以及批量抓取
2017-02-10 15:56
323 查看
对象导航查询
根据id查询某个公司,再查询这个公司里面所有的员工。GongsiEntitygongsi=(GongsiEntity)session.get(GongsiEntity.class,2);
Set<YuangongEntity>yuangongEntitySet= gongsi.getYuangongSet();
OID查询
根据id查询某一条记录,返回对象GongsiEntitygongsi=(GongsiEntity)session.get(GongsiEntity.class,2);
hql查询
hql语言和普通sql很相似,普通sql操作数据库表和字段,hql操作实体类和属性。步骤:创建Query对象,写hql语句,调用query对象里面的方法得到结果。
(1)查询所有
查询所有语句:from 实体类名称
Queryquery=session.createQuery("from GongsiEntity ");
List<YuangongEntity>yuangongEntityList=query.list();
(2)条件查询
(与sql基本类似)
条件查询语句:from 实体类名称 where 实体类属性名=?and 实体类属性名=?
from 实体类名称 like ?
Queryquery=session.createQuery("from GongsiEntity where gname=?");
//设置问号的值
query.setParameter(0,"百度");
List<YuangongEntity>yuangongEntityList=query.list();
(3)排序查询
排序查询语句:from 实体类名称 order by 实体类属性名称 asc/desc
默认是asc升序
Queryquery=session.createQuery("from GongsiEntity order by gid desc ");
List<YuangongEntity>yuangongEntityList=query.list();
这里以降序为例
(4)分页查询
Queryquery=session.createQuery("from GongsiEntity");
//设置分页开始位置
query.setFirstResult(0);
//设置分页显示数据条目
query.setMaxResults(1);
List<YuangongEntity>yuangongEntityList=query.list();
(5)投影查询
查询不是所有字段值,而是部分字段值
投影查询语句:select 实体类属性名称,实体类属性名称 from 实体类名称
Queryquery=session.createQuery("select gname from GongsiEntity");
List<String>yuangongEntityList=query.list();
(6)聚集函数使用
Count()、avg()等等
聚集函数使用语句:select count(*)from 实体类名称
Queryquery=session.createQuery("select count(*) from GongsiEntity");
//返回的是一个对象形式的数据
Object obj=query.uniqueResult();
QBC查询
(1)查询所有//创建Criteria对象,传入要查询的实体类名称
Criteriacriteria=session.createCriteria(GongsiEntity.class);
List<GongsiEntity> gongsiEntityList=criteria.list();
(2)条件查询
Criteriacriteria=session.createCriteria(GongsiEntity.class);
//这里设置查询条件,Restrictions类中有一系列静态方法,对应查询条件
criteria.add(Restrictions.eq("gid",2));
List<GongsiEntity> gongsiEntityList=criteria.list();
(3)排序查询
Criteriacriteria=session.createCriteria(GongsiEntity.class);
//这里做排序,需要传递实体类属性(以降序为例)
criteria.addOrder(Order.desc("gid"));
List<GongsiEntity> gongsiEntityList=criteria.list();
(4)分页查询
Criteriacriteria=session.createCriteria(GongsiEntity.class);
//设置开始位置
criteria.setFirstResult(0);
//设置显示的数据条目数量
criteria.setMaxResults(1);
List<GongsiEntity> gongsiEntityList=criteria.list();
(5)统计查询
Criteria criteria=session.createCriteria(GongsiEntity.class);
//设置方法,统计数据数
criteria.setProjection(Projections.rowCount());
Object obj=criteria.uniqueResult();
(6)离线查询
//创建对象
DetachedCriteriadetachedCriteria=DetachedCriteria.forClass(GongsiEntity.class);
Criteria criteria=detachedCriteria.getExecutableCriteria(session);
List<GongsiEntity> gongsiEntityList=criteria.list();
HQL多表查询
(1)内连接内连接查询语句写法:from 实体类名称别名inner join别名点上类中的set集合名称。
Query query=session.createQuery("fromGongsiEntity g inner join g.yuangongSet");
//返回的list里面每部分是数组形式
List list=query.list();
(2)左外连接
左外连接查询语句写法:from 实体类名称别名 left outer join别名点上类中的set集合名称。
Query query=session.createQuery("fromGongsiEntity g left outer join g.yuangongSet");
//返回的list里面每部分是数组形式
List list=query.list();
(3)右外连接
与左外连接类似不写了
(4)迫切内连接
迫切内连接查询语句写法:from 实体类名称别名 inner join fetch 别名点上类中的set集合名称。
Query query=session.createQuery("fromGongsiEntity g inner join fetch g.yuangongSet");
//返回的list里面每部分是对象形式。
List list=query.list();
(5)迫切左外连接
迫切左外连接查询语句写法:from 实体类名称别名 left outer join fetch 实体类名称点上类中的set集合名称。
Query query=session.createQuery("fromGongsiEntity g left outer join fetch g.yuangongSet");
//返回的list里面每部分是对象形式。
List list=query.list();
配置批量抓取
在实体类配置文件中,set标签上添加batch-size="10",在查询全部数据后,在根据查询出的数据进行查询时可以进行优化,其中数字10不是固定的,根据数据量而定,数据量越大,数字越大,优化程度越大相关文章推荐
- Hibernate 抓取策略fetch-2 (批量抓取batch-size以及hibernate.jdbc.fetch_size、hibernate.jdbc.batch_size)
- Gethibernatetemplate的查询更新以及批量操作方法
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- hibernate使用hql跨表查询遇到的问题以及解决方式
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- Hibernate的Api以及三种查询方式
- Hibernate查询数据的几种方式以及HQL用法及参数的几种使用方法
- hibernate三种查询方式
- hibernate中文输入信息搜索,要用参数的查询方式
- Hibernate的QBE查询方式
- Hibernate学习43 -- 抓取策略3 -- 子查询抓取
- 六种方式实现hibernate查询,及IDE推荐
- Hibernate对多个表进行查询,结果集的处理方式
- Hibernate学习42 -- 抓取策略2 -- 查询抓取
- hibernate数据查询的几种方式
- Hibernate QBC的查询方式的总结
- hibernate HQL 模糊查询 3种方式
- hibernate模糊查询的几种方式
- hibernate QBC查询方式
- hibernate查询方式举例