hibernate spring 多条件动态查询

ssh整合的练习。人员表:personneldao中查询时用的:Stringhql="fromPersonnelasp";Listlist=this.getHiberna... ssh整合的练习。
人员表:personnel
dao中查询时用的:
String hql = "from Personnel as p";

List list = this.getHibernateTemplate().find(hql);

但是如果是多个条件,而且都是动态的(如果有值就查询,没有值就去掉这个条件)应该怎么写啊,我在网上查到的是没用spring的session的方法,有没有两者整合以后的例子啊?

比如我两个条件:部门,职务。
我要查 某某部门,某某职务 的人员。
我会定义一个StringBuffer
然后判断如果不空就append一个条件,但是这个条件到后边要怎么设置,
this.getHibernateTemplate()没有这个方法吧。

期待高手回答啊。
上边复制错了:一个条件的时候这样查:
String hql = "from Personnel as p where p.department=?";

List list = this.getHibernateTemplate().find(hql, ?);

subString当然要toString了,不转化不能用的。

大哥,hibernate都是对象啊,条件有好多都是对象,toString()我用了,不行。
=====================
梦巜人生,这位大哥的代码还不错啊,不过有个缺点啊,hql语句要整句的传进来,而且final String[] para,
这个参数貌似只能是字符串,但是人员属性中有部门(部门是个对象)。看的懂,我自己写不出来哈哈。

其实在搜搜问问已经有人答了符合条件的答案,我已经做出来了,看看这有没有更好的方法.
展开
 我来答
jvm7572
推荐于2016-10-24 · TA获得超过783个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:177万
展开全部
hibernate对动态条件查询支持得最好的就是QBC查询
用Criteria做条件的动态植入

如果还是使用HQL的话
我建议你最好不要使用hibernate,还是使用JDBC比较好
因为拼接SQL就是我们使用JDBC最原始的一种思想
现在你又拼接HQL,那跟拼接SQL没多大区别
因为使用HQL证明你的软件思想还未达到面向对象,脑子里还大多数存在关系型数据库的概念。这样是学不好hibernate的
至少学不到真正ORM的精髓
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pa...4@qq.com
2009-06-04 · TA获得超过556个赞
知道小有建树答主
回答量:462
采纳率:0%
帮助的人:279万
展开全部
给你发个我写的方法你好好看看,带分页,如果不要分页你自己去掉很简单的,看不明白再问我:
/**
*
* 方法说明:根据不同的条件查找客户发布的资讯
*
* @param hql 查询语句
* @param para
* 条件参数数组
* @param page 要显示的页
* @param pageSize 页面大小
* @return 创建人:潘卫平 日期:2009-5-23
*/
public List<SyNewsKhzx> findSyNewsKhzx(final String hql,
final String[] para, int page, int pageSize) {
final int rsStart = (page - 1) * pageSize;
final int rsEnd = pageSize;
List list = (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
for (int i = 0; i < para.length; i++) {
if (!para[i].equals(""))
query.setString(i, para[i]);
}
if (rsEnd != 0) {
query.setFirstResult(rsStart);
query.setMaxResults(rsEnd);
}

List list = query.list();
return list;
}
});
return list;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b1c595219
2009-06-03 · TA获得超过233个赞
知道小有建树答主
回答量:1041
采纳率:0%
帮助的人:574万
展开全部
没个条件都放了String
比如“…… and”
在getHibernateTemplate().find(hql);之前
string.substring(0,string.length-3);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式