- 1
- 0
- 约7.66千字
- 约 9页
- 2017-02-09 发布于重庆
- 举报
Hibernate查询解决方案
Hibernate查询解决方案
这两个星期以来,我把原来用struts开发的一个测试工具改用struts+hibernate来实现,首先从心情上来,整个开发过程中始终保持愉快和平和,“原来开发可以这样愉快?”,再一点就是开发效率上高效了许多。现在sun又加入开始着手JDO2.0,想想看等它出台以后将是一个怎样激动人心得场面,让我们拭目以待。 用Hibernate来操纵持久数据非常简单,在这里一些简单的查询我会一笔带过,本文着重说明在综合查询兼有分页的时候我的一些经验,如果网友觉得我的方案还有不足的地方,也请和我讨论,我的 第一部分:Hibernate提供的查询接口或其方法(此部分不做深究,请参考hibernate手册)1。根据ID查询要用到Session接口的load方法。load(Class theClass, Serializable id) load(Class theClass, Serializable id, LockMode lockMode)load(Object object, Serializable id) 2。HQL语句进行查询2。1 利用Query接口,Query由Session里的createQuery()来产生一个查询1)不带参数的查询(这类比较简单)Query query=session.createQuery(select user from User as user);2)带参数的查询Query query=session.createQuery(select user from User as user where =?);query.setString(0,name)//假设name为传过来的参数Query query=session.createQuery(select user from User as user where =:name);query.setString(name,name)//假设name为传过来的参数 (多个参数以此类推) 利用Session接口的find查询find(String query) find(String query, Object[] values, Type[] types) find(String query, Object value, Type type) 均返回list 如:List list=session.find(select user from Users as user where =?,name,Hibernate.STRING)List list=session.find(select user from Users as user where =? and user.pw=?,new Object[]{name,pw},new Type[]{Hibernate.STRING,Hibernate.STRING}){推荐使用Query的方法进行查询} 第二部分:hibernate综合查询解决方案 (此部分详细实例说明,如有不足的地方请写信给我) 大家从第一部分可以看到,带有参数的查询,必须使用到Query接口,如上边:Query query=session.createQuery(select users from Users as users where =?);query.setString(0,name)//假设name为传过来的参数 但是在系统中如何才能写一个公用的查寻方法呢?咋一看,似乎是不可以的,因为每一次查询的参数不一样,参数的数量不一样(如下代码),那么我们如何提取共性呢? Query query=session.createQuery(select users from Users as users where =? and users.pw=?);query.setString(0,name)//假设name为传过来的参数 query.setString(1,pw); 首先说明,我的解决方案是从Seesion接口的find方法找到出口的,如下为Session接口得find()方法之一:find(String query, Object[] values, Type[] types) 其中Object[]为存放参数值的数组,Type[]为存放参数类型的数组,他们的顺序是和query里“?” 的顺序是相同的。那么我为什么不用该find方法呢,因为如果有分页的情况,那么该方法将不适用。下面详细要说明的解决方案:首先我想创建三个新的对象:Paras.java(参数对象) ParasList.java
原创力文档

文档评论(0)