homegrown.testing.waf;
/**
*
*
Title: HQL的语句封装类
*
Description: 该对象封装HQL的查询语句,参数集合,排序参数,分组参数,单页起始地址
*
Copyright: Copyright (c) 2003
*
Company:ifreeway
* @author camel
* @version 1.0
*/
public class HQuery {
/**
* HQL查询语句
*/
private String queryString;
/**
* 参数集合对象
*/
private ParaList paralist;
/**
* 排序字段
*/
private String orderby;
/**
* 分组字段
*/
private String groupby;
/**
* 分页起始查询地址
*/
private int pageStartNo;
/**
* 取得一个Hibernate的Query对象
* @return:Query对象
*/
public String getQueryString() {
return queryString;
}
/**
* 设置一个HQL查询字符串
* @param queryString:查询字符串
*
*/
public void setQueryString(String queryString) {
this.queryString =queryString;
}
/**
* 取得参数集合对象
* @return:参数集合对象
*/
public ParaList getParalist() {
return paralist;
}
/**
* 设置参数集合对象
* @param paralist:参数集合对象
*/
public void setParalist(ParaList paralist) {
this.paralist = paralist;
}
/**
* 取得排序字段
* @return:排序字段
*/
public String getOrderby() {
return orderby;
}
/**
* 设置排序字段
* @param orderby
*/
public void setOrderby(String orderby) {
this.orderby = orderby;
}
/**
* 取得分组字段
* @return
*/
public String getGroupby() {
return groupby;
}
/**
* 设置分组字段
* @param groupby
*/
public void setGroupby(String groupby) {
this.groupby = groupby;
}
/**
* 取得页起始地址
* @return
*/
public int getPageStartNo() {
return pageStartNo;
}
/**
* 设置页起始地址
* @param pageStartNo
*/
public void setPageStartNo(int pageStartNo) {
this.pageStartNo = pageStartNo;
}
}
上面三个对象的关系是:
用Paras来装载每一个查询参数
Paras paras=new Paras();
paras.setPName(...);
paras.setTypeNo(...);
然后放在ParasList中
ParasList paraslist=new ParasList();
paraslist.add(paras)
最后把填充以后的ParasList集合给HQuery
HQuery hquery=new HQuery();
hquery.setParalist(paraslist);
先面我们写一个公用查寻方法,来实现我们的综合查询:
/**
*
* 综合查询,首先实例化HQuery
* @see com.ifreeway.homegrown.testing.common.waf.DBHandler#find(com.ifreeway.homegrown.testing.common.waf.HQuery)
*/
public List find(HQuery _query) throws HibernateException {
List itr = null;
try {
StringBuffer query_str = new StringBuffer(_query.getQueryString());
//是否要排序
if (_query.getOrderby() != null) {
query_str.append(_query.getOrderby());
}
//是否要分组
if (_query.getGroupby() != null) {
query_str.append(_query.getGroupby());
}
Session session = getSession();
Query query = session.createQuery(query_str.toString());
if (_query.getParalist() != null) {
List list = _query.getParalist();
for (int i = 0; i < list.size(); i++) {
Paras param = (Paras) list.get(i);
switch (param.getTypeNo()) {//此处要根据参数类型的增加要增加相应的“case”
case Types.VARCHAR :
query.setString(i, param.getPName().toString());
break;
case Types.INTEGER :
query.setInteger(
i,
((Integer) param.getPName()).intValue());
break;
case Types.DATE :
query.setDate(i, (java.sql.Date) param.getPName());
break;
case Types.DOUBLE :
query.setDouble(
i,
((Double) param.getPName()).doubleValue());
break;
case Types.BOOLEAN :
query.setBoolean(
i,
((Boolean) param.getPName()).booleanValue());
break;
case Types.CHAR :
query.setCharacter(
i,
((Character) param.getPName()).charValue());
break;
case Types.JAVA_OBJECT :
query.setEntity(i, (BaseModel) param.getPName());
break;
}
}
}
//是否存在分页,当_query.getPageStartNo()==0是不分页
if (_query.getPageStartNo() != 0) {
int pageno = _query.getPageStartNo();
query.setFirstResult((pageno - 1) * Constants.RECORD_PER_PAGE);
query.setMaxResults((pageno) * Constants.RECORD_PER_PAGE);
上一页 [1] [2] [3] 下一页