HibernateDaoSupport的getHibernateTemplate.find()方法带参查询返回结果是nul问题解决

本文探讨了使用getHibernateTemplate.find方法进行数据库查询的两种方式,并详细解释了如何正确地使用带参和不带参的查询方法。文章通过具体示例介绍了如何避免常见的错误,如不当使用单引号导致查询失败的问题。
摘要由CSDN通过智能技术生成

我们熟悉一下getHibernateTemplate.find()的查询:

一种是不带参getHibernateTemplate.find(String hql);

另一种是带参getHibernateTemplate.find(String hql, Object... values);

问题来了,贴上源码:

 

//getHibernateTemplate.find(String hql);查询方式
public JDRole findRoleByRoleCode(String roleCode) throws Exception {
		String hql = "FROM JDRole r where r.roleCode = ? and state=1";
		List<JDRole> fuck = (List<JDRole>)this.getHibernateTemplate().find("FROM JDRole where roleCode = '"+roleCode+"' and state=1");
		return UtilTool.isNotEmpty(fuck) ? fuck.get(0):null;
	}

当我使用getHibernateTemplate.find(String hql);方法时可以查询到值的。

 

 

//getHibernateTemplate.find(String hql,Object... values);查询方式
public JDRole findRoleByRoleCode(String roleCode) throws Exception {
		String hql = "FROM JDRole r where r.roleCode = ? and state=1";
		List<JDRole> fuck = (List<JDRole>)this.getHibernateTemplate().find("FROM JDRole where roleCode = ? and state=1", new Object[]{"'"+roleCode+"'"});
		return UtilTool.isNotEmpty(fuck) ? fuck.get(0):null;
	} 

当我使用getHibernateTemplate.find(String hql,Object... values);方法时不可以查询值。返回的值是null;

 

经过调试发现使用参数查询(getHibernateTemplate.find(String hql))时,我们传的字符串值不能添加单引号 ‘  ,在使用不带参数查询(getHibernateTemplate.find(String hql, Object... values))时需要添加单引号 ‘ ,不让回报错!

 

总结正确写法:

 

public JDRole findRoleByRoleCode(String roleCode) throws Exception {
		String hql = "FROM JDRole r where r.roleCode = ? and state=1";
		List<JDRole> fuck = (List<JDRole>)this.getHibernateTemplate().find("FROM JDRole where roleCode = ? and state=1", new Object[]{roleCode});
		return UtilTool.isNotEmpty(fuck) ? fuck.get(0):null;
	} 

感兴趣的朋友可以关注微信公众号(会定时推送新的知识):

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值