Hibernate的检索方式
2016-12-20 10:47
267 查看
Hibrenate提供了五种检索对象的方式
导航对象图检索方式:根据已经加载的对象导航到其他对象OID检索方式:按照对象的OID来检索对象
HQL检索方式:使用面向对象的HQL查询语言
QBC检索方式:使用QBC(Query by Criteria)API来检索对象
本地SQL检索方式:使用本地数据库的SQL查询语言
导航对象图检索方式:就是利用类与类之间的关系来检索对象,比如在论坛的开发中,帖子(page)与发帖人(owner)之间:
Page page = (Page)session.get(Page.class,1);Owner own = page.getOwner();
这样就可以通过帖子找到发帖人。【注意:他们之间的关联关系为多对一】
OID检索方式:主要是指通过session的get(),load()方法来获取某条记录对应的对象.
Page page = (Page)session.load(page.class,id);Page page = (Page)session.get(page.class,id);
HQL检索方式:面向对象的查询语言,HQL是使用最广的一种查询方式。它提供的功能也很丰富。
——在查询语句中设定各种查询条件——支持投影查询,就是知查询对象的部分属性
——支持分页查询 、支持连接查询
——支持分组查询,允许使用 HAVING 和GROUP BY关键字
——提供内置聚集函数(sum(),min(),max())
——支持子查询,动态绑定参数
——能够调用用户定义的SQL函数或标准的SQL函数
通常的检索方式:
//绑定1
String sql = "from User as u where u.username=? and u.password=?";//定义检索语句
Query query = session.createQuery(sql);//创建查询接口
query.setString(0,"zhangsan");
query.setString(1,"123456");//动态绑定参数
/*--------------绑定2--------------*/
String sql = "from User as u where u.username=:name and u.password=:pass"; //定义检索语句 Query query = session.createQuery(sql);//创建查询接口 query.setString("name","zhangsan"); query.setString("pass","123456");//动态绑定参数
List list = query.list();//执行查询
/**
* hibernate的动态绑定参数机制依赖与JDBC中的PreparedStatement的预编译SQL语句的功能
* HQL参数绑定有俩种机制 ①按照参数位置【情况1】 ②按照参数名【情况2】
**/
还有相关方法:
•setEntity():
把参数与一个持久化类绑定
•setParameter():绑定任意类型的参数.该方法的第三个参数显式指定Hibernate映射类型
Qurey接口支持方法链编程风格。【Query query = session.createQuery(sql).setString().setString.setInteger().list()】
HQL支持分页查询
–setFirstResult(intfirstResult):设定从哪一个对象开始检索,参数firstResult表示这个对象在查询结果中的索引位置,索引位置的起始值为0.默认情况下,Query从查询结果中的第一个对象开始检索
–setMaxResults(intmaxResults):设定一次最多检索出的对象的数目.在默认情况下,Query
和 Criteria接口检索出查询结果中所有的对象
QBC检索方式:HQL检索方式需要定义基于字符串形式的HQL查询语句,QBC提供了检索对象的另一种方式,它主要由Criteria接口、Criterion接口和Expression类组成。它支持动态的生成查询语句。
Criteria criteria = session.createCriteria(Page.class);Criterion criterion = Expression.like("name",""T%);
Criterion criterion1 = Expression.eq("date",new Date("2016-12-12"));
criteria = criteria.add(criterion);
criteria = criteria.add(criterion1);List result = criteria.list();
本地sql检索方式
示例代码:Query query = session.createSQLQuery("select {c.*} from CUSTOMER as cwhere c.NAME like :customerName andc.AGE=:customerAge"); query.setString("customerName", "Test"); query.setInteger("customerAge", 21); List result = query.list();相关文章推荐
- HIBERNATE检索对象方式
- Hibernate检索方式
- Hibernate学习笔记(三)--检索方式
- Hibernate中检索方式返回值的一些心得
- Hibernate 检索方式简介 2
- Hibernate学习(八):检索方式
- Hibernate 的检索方式
- Hibernate的检索方式(二)
- Hibernate的检索方式(一)
- Hibernate的检索方式(一)
- Hibernate检索方式
- Hibernate的检索方式(一)【转】
- Hibernate的检索方式
- Hibernate的检索方式(三)
- Hibernate的检索方式(五)【转】
- Hibernate检索方式
- Hibernate检索方式
- Hibernate的检索方式(四)【转】
- Hibernate的检索方式(五)
- Hibernate学习(八):检索方式