根据页面的输入条件自己动态拼写hql。
解决方案 »
- sun 的 FtpClient connection reset 错误?
- <s:param name="typeId" value=""></s:param>取得页面值,在线等
- 关联表反转后类后怎么操作
- 新手,问个幼稚问题,怎样得到默认打印机中的默认的纸张大小,他的宽度和高度
- 采用Struts+Spring+Hibernate 的框架结构,如何可以做到象使用JDBC那样灵活操作(增加/删除)数据库表字段?
- javascript修改xml文件错误
- 急!关于系统的分布式部署
- 如何在struts中用好ThreadLocal管理Session的模式?
- Java通过jdbcOdbc访问Access数据为中时 like语句的问题.....急!
- 配置WEBLOGIC中的ConnectionPool?在线等
- lucene对单个域多条件检索的问题
- jsp中添加缓存问题
当Criteria不能满足你的要求的时候,还是要用hql
Criteria criteria = session.createCriteria(Person.class).setFirstResult(from).setMaxResults(number);
if(null !=condition){
if(condition.getPersonCodeQuery() !=null &&!condition.getPersonCodeQuery().trim().equals("")){
criteria.add(Restrictions.like("personCode", condition.getPersonCodeQuery()+"%"));
}if(condition.getPersonIdBeginQuery() !=null &&!condition.getPersonIdBeginQuery().trim().equals("")){
criteria.add(Restrictions.ge("personID", new Integer(condition.getPersonIdBeginQuery())));
}if(condition.getPersonIdEndQuery() !=null &&!condition.getPersonIdEndQuery().trim().equals("")){
criteria.add(Restrictions.le("personID", new Integer(condition.getPersonIdEndQuery())));
}if(condition.getPersonSexQuery() != null &&!condition.getPersonSexQuery().trim().equals("")){
criteria.add(Restrictions.eq("personSex", condition.getPersonSexQuery()));
}
}
criteria1.list();
hibernate中有没有很简单的实现方法?
1 hql拼接字符串
2 Criteria(写一大堆判断,确实有些恶心,呵呵)那就只能用第一种方法,如果你用到了spring的话,可以用HibernateTemplate里的find方法,如果没用spring,那么可以这么用hql,其实就是把spring的部分代码拿出来了...一系列的if判断,拼接字符串
Query queryObject = session.createQuery(queryString);
if (values != null) {
for (int i = 0; i < values.length; i++) {
queryObject.setParameter(i, values[i]);
}
}
List list = queryObject.list();
其中queryString是动态拼接的hql语句,比如from Xxx x where x.id=? and x.name like ?
values是查询条件组成的数组