FROM Info WHERE title like ? and state = ? order by createTime,state
//条件查询 public List<T> findObjects(String hql, List<Object> parameters);
@Override public List<T> findObjects(String hql,List<Object> parameters) { Query query=getSession().createQuery(hql); //添加查询条件 if(parameters!=null){ for (int i = 0; i < parameters.size(); i++) { query.setParameter(i, parameters.get(i)); } } return query.list(); }
//条件查询 public List<T> findObjects(String hql, List<Object> parameters);
@Override public List<T> findObjects(String hql, List<Object> parameters) { return baseDao.findObjects(hql, parameters); }
//列表页面 public String listUI() throws Exception{ try { //加载分类集合 ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP); String hql="FROM Info i "; List<Object> parameters=new ArrayList<Object>(); if(info != null){ if(StringUtils.isNotBlank(info.getTitle())){ hql+="WHERE i.title like ?"; //加“%”进行模糊查询 parameters.add("%"+info.getTitle()+"%"); } } //根据创建时间降序排序 hql+="ORDER BY i.createTime DESC"; infoList=infoService.findObjects(hql,parameters); } catch (Exception e) { throw new Exception(e.getMessage()); } return "listUI"; }
<li> 信息标题:<s:textfield name="info.title" cssClass="s_text" id="infoTitle" cssStyle="width:160px;"/> </li> <li><input type="button" class="s_button" value="搜 索" onclick="doSearch()"/></li>
function doSearch(){ document.forms[0].action = "${basePath}tax/info_listUI.action"; document.forms[0].submit(); }
//列表页面 public String listUI() throws Exception{ try { //加载分类集合 ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP); String hql="FROM Info i"; List<Object> parameters=new ArrayList<Object>(); if(info != null){ if(StringUtils.isNotBlank(info.getTitle())){ hql+=" WHERE i.title like ?"; //加“%”进行模糊查询 parameters.add("%"+info.getTitle()+"%"); } if(StringUtils.isNotBlank(info.getState())){ hql+=" AND i.state = ?"; //加“%”进行模糊查询 parameters.add("%"+info.getState()+"%"); } } //根据创建时间降序排序 hql+=" ORDER BY i.createTime DESC"; infoList=infoService.findObjects(hql,parameters); } catch (Exception e) { throw new Exception(e.getMessage()); } return "listUI"; }
package cn.edu.hpu.tax.core.util; import java.util.ArrayList; import java.util.List; public class QueryHelper { //from子句 private String fromClause=""; //where子句 private String whereClause=""; //oeder by子句 private String orderByClause=""; private List<Object> parameters; //排序属性 public static String ORDER_BY_DESC="DESC";//降序 public static String ORDER_BY_ASC="ASC";//升序 /** * 构造from子句 * @param clazz实体类 * @param alias实体类对应的别名 * */ public QueryHelper(Class clazz,String alias){ fromClause="FROM "+clazz.getSimpleName()+" "+alias; } /** * 构造where子句 * @param condition查询条件语句:例如i.title like ? * @param params 查询条件语句中?对应的查询条件值,例如:%标题% * */ public void addCondition(String condition,Object... params){ if(whereClause.length()>1){//非第一个查询条件 whereClause+=" AND "+condition; }else{//第一个查询条件 whereClause+=" WHERE "+condition; } //设置查询条件值到查询条件值集合中 if(parameters == null){ parameters=new ArrayList<Object>(); } if(params != null){ for(Object param:params){ parameters.add(param); } } } /** * 构造order by子句 * @param property 查询条件语句:例如: * @param order * */ public void addOrderByProperty(String property,String order){ if(orderByClause.length()>1){//非第一个排序属性 orderByClause+=","+property+" "+order; }else{//第一个排序属性 orderByClause+=" ORDER BY "+property +" "+order; } } //查询hql语句 public String getQueryListHql(){ return fromClause+whereClause+orderByClause; } //查询hql语句中?对应的查询条件集合 public List<Object> getParameters(){ return parameters; } }
//列表页面 public String listUI() throws Exception{ try { //加载分类集合 ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP); QueryHelper queryHelper=new QueryHelper(Info.class,"i"); if(info != null){ if(StringUtils.isNotBlank(info.getTitle())){ queryHelper.addCondition("i.title like ?", "%"+info.getTitle()+"%"); } queryHelper.addCondition("i.state = ?", "1"); } //根据创建时间降序排序 queryHelper.addOrderByProperty("i.createTime", queryHelper.ORDER_BY_DESC); infoList=infoService.findObjects(queryHelper); } catch (Exception e) { throw new Exception(e.getMessage()); } return "listUI"; }
package cn.edu.hpu.tax.core.service; import java.io.Serializable; import java.util.List; import cn.edu.hpu.tax.core.util.QueryHelper; import cn.edu.hpu.tax.info.entity.Info; public interface BaseService<T> { //新增 public void save(T entity); //更新 public void update(T enetity); //根据id删除 public void delete(Serializable id); //根据id查找 public T findObjectById(Serializable id); //查找列表 public List<T> findObjects(); //条件查询 @Deprecated //不推荐使用 public List<T> findObjects(String hql, List<Object> parameters); //使用工具类的条件查询 public List<T> findObjects(QueryHelper queryHelper); }
@Override public List<T> findObjects(QueryHelper queryHelper) { // TODO Auto-generated method stub return baseDao.findObjects(queryHelper); }
package cn.edu.hpu.tax.core.dao; import java.io.Serializable; import java.util.List; import cn.edu.hpu.tax.core.util.QueryHelper; import cn.edu.hpu.tax.info.entity.Info; public interface BaseDao<T> { //新增 public void save(T entity); //更新 public void update(T enetity); //根据id删除 public void delete(Serializable id); //根据id查找 public T findObjectById(Serializable id); //查找列表 public List<T> findObjects(); //条件查询 public List<T> findObjects(String hql, List<Object> parameters); //使用工具类的条件查询 public List<T> findObjects(QueryHelper queryHelper); }
@Override public List<T> findObjects(QueryHelper queryHelper) { Query query=getSession().createQuery(queryHelper.getQueryListHql()); List<Object> parameters=queryHelper.getParameters(); //添加查询条件 if(parameters!=null){ for (int i = 0; i < parameters.size(); i++) { query.setParameter(i, parameters.get(i)); } } return query.list(); }
证明我们的分类助手工具类编写没有问题,至此我们的分类查询暂时编写完毕。
转载请注明出处:http://blog.csdn.net/acmman/article/details/49887293