dongzuomianban 2014-02-21 16:40
浏览 1058

动态sql实现模糊查询错误

public List findByCondition(String readerTypeId, String barcode,
String name, final int page, final int pageSize)
throws DAOException {
final List params = new ArrayList();
final String hql = createFindHQL(readerTypeId, barcode, name, params, page,
pageSize);
List list = (List) super.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
// 分页参数
int begin = (page - 1) * pageSize;
query.setFirstResult(begin);
query.setMaxResults(pageSize);
for (int i = 0; i < params.size(); i++) {
query.setParameter(i, params.get(i));
}
return query.list();
}
});
// 将list集合封装成List
List readerList = new ArrayList();
for (Object[] objs : list) {
ReaderVO vo = new ReaderVO();
Reader r = (Reader)objs[0];
//将r属性值给vo属性赋值
BeanUtils.copyProperties(r, vo);
vo.setReaderTypeName(objs[1].toString());
readerList.add(vo);
}
return readerList;
}

private String createFindHQL(String readerTypeId, String barcode, String name,
        List<Object> params, int page, int pageSize) {
    // 开始拼子查询
    StringBuffer sb = new StringBuffer();
    sb.append("select a,b.typeName ");
    sb.append("from Reader a,ReaderType b ");
    sb.append("where a.readerType = b.id ");
    if (readerTypeId != null
            && readerTypeId.length() > 0) {
        sb.append("and a.readerType=? ");
        params.add(readerTypeId);
    }
    if(barcode != null
            && barcode.length() > 0){
        sb.append("and a.barcode=? ");
        params.add(barcode);
    }
    if (name != null && name.length() > 0) {
        sb.append("and a.name like ? ");
        params.add("'%" + name + "%'");
    }
    sb.append("order by a.id");
    System.out.println(sb.toString());
    return sb.toString();
}

我JUnit方法:List list = readerDao.findByCondition("4", null, "om", 1, 5);
数据库中有name为"tom"的记录,但是没找到。
为什么?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 自动转发微信群信息到另外一个微信群
    • ¥15 outlook无法配置成功
    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换