Hibernate的检索方式
来源:互联网 发布:一个域名对应多个端口 编辑:程序博客网 时间:2024/05/21 17:14
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函数
通常的检索方式:
//绑定1String 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();
0 0
- hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate 的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- Hibernate的检索方式
- hibernate的检索方式
- 编写一个菜单驱动程序的雏形。该程序显示一个提供4个选项的菜单——每个选项用一个字母标记。
- jQuery属性方法
- 工厂模式
- Python学习之路1——————切片
- 希尔排序
- Hibernate的检索方式
- tr linux
- mqtt协议
- Rabbitmq学习之路3-cluster
- ubuntu下安装h2数据库
- [Mapbox GL]在标签下方新增layer
- 剑指offer--斐波那契数列
- JRockit Mission Control
- 雾霾