用于辅助拼接HQL语句_工具

来源:互联网 发布:广州数据分析师培训 编辑:程序博客网 时间:2024/05/22 10:38
package cn.itcast.oa.util;import java.util.ArrayList;import java.util.List;import cn.itcast.oa.base.DaoSupport;import cn.itcast.oa.domain.PageBean;import com.opensymphony.xwork2.ActionContext;/** * 用于辅助拼接HQL语句_工具 *  * @author  * @version V1.0 */@SuppressWarnings({ "rawtypes" })public class QueryHelper {private String fromClause;// From子句private String whereClause = "";// Where子句private String orderByClause = "";// OrderBy子句private List<Object> parameters = new ArrayList<Object>();// 参数列表/** * 生成From子句 *  * @param clazz * @param alias *            别名 */public QueryHelper(Class clazz, String alias) {fromClause = " from " + clazz.getSimpleName() + " " + alias;// from User u}/** * 拼接Where子句 *  * @param condition * @param params */public QueryHelper addCondition(String condition, Object... params) {// 拼接if (whereClause.length() == 0) {whereClause = " where " + condition;// from User u where ?} else {whereClause += " and " + condition;// from User u where ?,and ?}// 参数if (params != null) {for (Object obj : params) {parameters.add(obj);}}return this;}/** * 如果第一个参数为true,则拼接Where子句 *  * @param append * @param condition * @param params */public QueryHelper addCondition(boolean append, String condition, Object... params) {if (append) {addCondition(condition, params);}return this;}/** * 拼接OrderBy子句 *  * @param propertyName *            参于排序的属性名 * @param asc *            true表示升序(1,2,3),false表示降序(3,2,1) */public QueryHelper addOrderProperty(String propertyName, boolean asc) {if (orderByClause.length() == 0) {orderByClause = " Order by " + propertyName + (asc ? " asc " : " desc ");// from User u where ? order by ? asc/desc} else {orderByClause += " , " + propertyName + (asc ? " asc " : " desc ");// from User u where ? order by ? asc/desc,? asc/desc}return this;}/** * 如果第一个参数为true,则拼接OrderBy子句 *  * @param append * @param propertyName * @param asc */public QueryHelper addOrderProperty(boolean append, String propertyName, boolean asc) {if (append) {addOrderProperty(propertyName, asc);}return this;}/** * 获取生成用于查询数据列表的HQL语句 *  * @return */public String getListQueryHql() {return fromClause + whereClause + orderByClause;}/** * 获取生成用于查询总记录数的HQL语句 *  * @return */public String getCountQueryHql() {return " select count(*) " + fromClause + whereClause;}/** * 获取HQL中的参数值列表 *  * @return */public List<Object> getParameters() {return parameters;}/** * 查询分页信息,并放到值栈栈顶 * @param service * @param pageNum * @param pageSize */public void preparePageBean(DaoSupport<?> service,int pageNum, int pageSize) {PageBean pageBean = service.getPageBean(pageNum, pageSize, this);ActionContext.getContext().getValueStack().push(pageBean);}}

原创粉丝点击