DAO层文件中有很多查询语句,但怎么查询那些查询条件为两个字段以上的? DAO层文件中有很多查询语句,但怎么查询那些查询条件为两个字段以上的?比如,select * from when 字段1=123 and 字段2=456;那些文件都是FINDBY字段名(??)大家帮忙一下,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是在DAO层生的那个组合属性查询是什么样子。我这个不知道为什么就是生成不了。 public List findByProperty(String propertyName, Object value) { log.debug("finding Users instance with property: " + propertyName + ", value: " + value); try { String queryString = "from Users as model where model." + propertyName + "= ?"; return getHibernateTemplate().find(queryString, value); } catch (RuntimeException re) { log.error("find by property name failed", re); throw re; } } 上面是我生成的只能查询单个属性条件的查询方法。组合查询应该是这样的,public List findByProperty(String propertyName[], Object value[]) 但是内容怎么写?? 为什么不考虑使用findByExample(对象)呢,不过这个不能解决复杂的SQL查询 楼主 下面是我给的例子片段 希望对你有帮助public List findByProperty(String propertyName[], Object value[]){ String sql = "from Users as model where"; for(int i = 0; i < propertyName.length -1; i++){ if(i == 0){ sql += " model." + propertyName[i] + "= ?"; }else{ sql += " and model." + propertyName[i] + "= ?"; } } return createQuery(sql, value).list(); } public Query createQuery(String queryString, Object... values) { Assert.hasText(queryString); Query queryObject = getSession().createQuery(queryString); if (values != null) { for (int i = 0; i < values.length; i++) { queryObject.setParameter(i, values[i]); } } return queryObject; }祝你好运 不好意思 Object... 改成Object[]吧 十分感谢楼上的,要的就是这个,呵呵再多问一句,我的DAO层是逆向工程生成的,为什么就没生成出这段代码呢??到是生成了一个findByProperty(String propertyName, Object value),这个是用于单项条件的 public List findByProperty(String propertyName[], Object value[]) { log.debug("finding Users instance with property: " + propertyName + ", value: " + value); String queryString = "from Users as model where"; try { for (int i = 0; i < propertyName.length; i++) { if(i == 0 ){ queryString += " model."+ propertyName[i] + "= ?"; }else{ queryString += " and model."+ propertyName[i] + "= ?"; } } return getHibernateTemplate().find(queryString, value); } catch (RuntimeException re) { log.error("find by property name failed", re); throw re; } } 最终是这样解决的,我的项目是SSH的。DAO是逆向出来的。用Spring来完成事务管理。再次感谢7楼及其他楼的兄弟们 JConsole 远程连接Linux Tomcat 连接失败问题 java 正则处理字符串 java基础题 谢谢 MyEclipse 6.0.1 注册码 我都已经注册了可是退出程序再打开程序又让我再注册!这怪了! jsp中怎么样用js控制两个Listbox https如何在resin3.0中配置 我需要系统的学习一下SOA,请问哪本书比较好。有什么好的学习方法以及资料! J2SE做的界面那么丑,有办法改进吗??/ java初学者问题 工作流中的流程定义实体对象ProcessDefinitionEntity struts2 参数请求OGNL奇怪问题 续: 3年没上CSDN了,今天过来散分,
log.debug("finding Users instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Users as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
public List findByProperty(String propertyName[], Object value[]){
String sql = "from Users as model where";
for(int i = 0; i < propertyName.length -1; i++){
if(i == 0){
sql += " model." + propertyName[i] + "= ?";
}else{
sql += " and model." + propertyName[i] + "= ?";
}
}
return createQuery(sql, value).list();
}
public Query createQuery(String queryString, Object... values) {
Assert.hasText(queryString);
Query queryObject = getSession().createQuery(queryString);
if (values != null) {
for (int i = 0; i < values.length; i++) {
queryObject.setParameter(i, values[i]);
}
}
return queryObject;
}
祝你好运
再多问一句,我的DAO层是逆向工程生成的,为什么就没生成出这段代码呢??到是生成了一个findByProperty(String propertyName, Object value),这个是用于单项条件的
log.debug("finding Users instance with property: " + propertyName
+ ", value: " + value);
String queryString = "from Users as model where";
try {
for (int i = 0; i < propertyName.length; i++)
{ if(i == 0 ){
queryString += " model."+ propertyName[i] + "= ?";
}else{
queryString += " and model."+ propertyName[i] + "= ?";
}
}
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}