hibernate的查询方式汇总
来源:互联网 发布:儿童编程教育市场 编辑:程序博客网 时间:2024/05/16 17:07
Hibernate总的来说共有三种查询方式:HQL、QBC和SQL三种。但是细分可以有如下几种:
一、HQL查询方式
******注意:
示例1:
static void query(String name){
//使用命名参数,推荐使用,易读。
}
}
(Student实体类中含有Class对象的引用。这样相当于两张表的联合查询)
示例2(分页查询):
query.setFirstResult(0);
query.setMaxResults(10);
List result = query.list();
说明:
二、QBC(Query By Criteria) 查询方式
Restrictions类的常用方法:
Restrictions类的常用方法:
方法名称
描述
Restrictions.eq等于Restrictions.allEq使用Map,Key/Valu进行多个等于的比对Restrictions.gt大于Restrictions.ge大于等于Restrictions.lt小于Restrictions.le小于等于Restrictions.between对应SQL的betweenRestrictions.like对应SQL的likeRestrictions.in对应SQL的inRestrictions.andand关系Restrictions.oror关系Restrictions.sqlRestrictionSQL限定查询Order类的常用方法:
方法名称
描述
Order.asc升序Order.desc降序Projections类的常用方法
方法名称
描述
Projections.avg求平均值Projections.count统计某属性的数量Projections.countDistinct统计某属性不同值的数量Projections.groupProperty指定某个属性为分组属性Projections.max求最大值Projections.min求最小值Projections.projectionList创建一个ProjectionList对象Projections.rowCount查询结果集中的记录条数Projections.sum求某属性的合计
示例:static void cri(String name,String password){
}finally{
}
示例2(分页查询):
criteria.addOrder( Order.asc("name") ); //排序方式
criteria.setFirstResult(0);
criteria.setMaxResults(10);
List result = criteria.list()
说明:可以使用Criteria的工厂Criterion保存Restrictions,然后添加到Criteria中
实例:
/*
* 做工厂Criterion集合
*/
List<Criterion> cs = new ArrayList<Criterion>();
// 生成工厂Criterion对象
Criterion cri = Restrictions.like("title", title,MatchMode.ANYWHERE);
// 将工厂添加到集合中
cs.add(cri);
/*
* 将工厂Criterion集合的条件加载到Criteria中
*/
Session session = HibernateUtil.getSession();
Criteria criteria = session.createCriteria(House.class);
// 动态添加查询条件
for (Criterion criterion : cs) {
criteria.add(criterion);
}
三、QBE(Query By Example)例子查询方式
Session session = SessionFactory.getCurrentSession();
适用情况:面向对象操作。
四、
DetachedCriteria:离线条件查询
List users = dc(dc);//执行查询
}
适用情况:面向对象操作,分离业务与底层,不需要字段属性摄入到Dao实现层。
五、命名查询
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
</hibernate-mapping>
2、在java代码中写入:
适用情况:万能方法,有点像ibatis轻量级框架的操作,方便维护。
六、SQL查询
static List sql() {
Session session = HibernateUtil.getSession();
Query q = session.createSQLQuery("select * from user").addEntity(User.class);
List<User> rs = q.list();
适用情况:不熟悉HQL的朋友,又不打算转数据库平台的朋友,万能方法
七、OID查询方式
八、Query.iterator的N+1查询(基于一的HQL,多见于一对多、多对多的关联映射)
* list和iterate的区别?
避免N+1查询解决方法:
九、复查查询(基于二:
示例:
Session session = SessionFactory.getCurrentSession();
} catch (HibernateException ex) {
- hibernate的查询方式汇总
- hibernate 查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate 查询方式(HQL/QBC/QBE)汇总
- Hibernate的查询方式
- hibernate的查询方式
- Markdown语法试验
- mysql-explain
- Java点滴-List<Integer> list; 中尖括号的意思
- 关于android:minSdkVersion;android:targetSdkVersion;maxSdkVersion
- mantis-航班预定系统
- hibernate的查询方式汇总
- c# string转为DateTime
- linux(redhat) 安装jdk
- java日期类型处理
- JDK源码研究——ReentrantLock浅析
- java日期时间格式小结
- swift继承自Objective-C基类时重载方法报错的问题
- 图形学 图形渲染管线
- 软件测试工程师的技能