java封装前端查询条件通用版
更新时间:2019年05月28日 11:17:56 作者:jackethans
这篇文章主要为大家详细介绍了java封装前端查询条件的通用版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了java封装前端查询条件的具体代码,供大家参考,具体内容如下
import hengyi.oa.mobile.exception.ServiceException; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; /** * 查询条件封装类 * @author Xue.YQ * @created 2018年11月11日 */ public class TableTagBean { public static final int DEFAULT_PAGE_SIZE = 20; private static final String DELIMITER = "\n"; private int m_page; private int m_pageSize = DEFAULT_PAGE_SIZE; private int m_total; private String m_orderBy; private boolean m_asc; private StringMap m_condition = new StringMap(); private List m_list; private boolean m_builded = false; private String m_conditionParam = null; private int m_pageCount; private boolean m_canPrev; private boolean m_canNext; public TableTagBean() {} public boolean getAsc() { return m_asc; } public void setAsc(boolean asc) { ensureNotBuilded(); m_asc = asc; } public StringMap getCondition() { return m_condition; } public void setCondition(StringMap condition) { ensureNotBuilded(); m_condition = condition; } public String getOrderBy() { return m_orderBy; } public void setOrderBy(String orderBy) { ensureNotBuilded(); m_orderBy = orderBy; } public int getPage() { return m_page; } public void setPage(int page) { ensureNotBuilded(); m_page = page; } public int getPageSize() { return m_pageSize; } public void setPageSize(int pageSize) { ensureNotBuilded(); m_pageSize = pageSize; } public int getTotal() { return m_total; } public void setTotal(int total) { ensureNotBuilded(); m_total = total; } public List getList() { return m_list; } public void setList(List list) { ensureNotBuilded(); m_list = list; } public void ensureNotBuilded() { if (m_builded) { throw new IllegalStateException( "Can't set attribute to TableTagBean after build() is called."); } } public boolean getCanNext() { return m_canNext; } public boolean getCanPrev() { return m_canPrev; } public String getConditionParam() { return m_conditionParam; } public int getPageCount() { return m_pageCount; } public void build() throws UnsupportedEncodingException { if (m_condition.size() > 0) { m_conditionParam = CryptoUtil.base64url_encode(m_condition .toString(DELIMITER).getBytes("GBK")); } if (m_total % m_pageSize != 0) { m_pageCount = m_total / m_pageSize + 1; } else { m_pageCount = m_total / m_pageSize; } m_canPrev = m_page > 0; m_canNext = m_page < m_pageCount - 1; m_builded = true; } public static TableTagBean getFromRequest(HttpServletRequest req) throws UnsupportedEncodingException { TableTagBean r = new TableTagBean(); String p = req.getParameter("p"); if (StringUtils.isNotEmpty(p) ) { r.setPage(Integer.parseInt(p)); } String o = req.getParameter("o"); if (StringUtils.isNotEmpty(o)) { r.setOrderBy(o); } String a = req.getParameter("a"); if (StringUtils.isNotEmpty(a)) { r.setAsc(a.equals("1")); } String c = req.getParameter("c"); if (StringUtils.isNotEmpty(c)) { r.setCondition(decodeConditionParam(c)); } return r; } private static StringMap decodeConditionParam(String c) throws UnsupportedEncodingException { String s = new String(CryptoUtil.base64url_decode(c), "GBK"); return new StringMap(s, DELIMITER); } public String getQueryParameter() { StringBuffer sb=new StringBuffer(); sb.append("p="+m_page); if(m_orderBy!=null) { sb.append("&o="+m_orderBy+"&a="+(m_asc?"1":"0")); } if(m_conditionParam!=null) { sb.append("&c="+m_conditionParam); } return sb.toString(); } @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("[TableTagBean]\r\n"); sb.append("m_page: " + m_page + "\r\n"); sb.append("m_pageSize :" + m_pageSize + "\r\n"); sb.append("m_total :" + m_total + "\r\n"); sb.append("m_orderBy :" + m_orderBy + "\r\n"); sb.append("m_asc :" + m_asc + "\r\n"); sb.append("m_condition :" + m_condition + "\r\n"); sb.append("m_list(size) :" + m_list.size() + "\r\n"); sb.append("m_builded :" + m_builded + "\r\n"); sb.append("m_conditionParam :" + m_conditionParam + "\r\n"); sb.append("m_pageCount :" + m_pageCount + "\r\n"); sb.append("m_canPrev :" + m_canPrev + "\r\n"); sb.append("m_canNext :" + m_canNext + "\r\n"); return sb.toString(); } @SuppressWarnings({ "rawtypes", "unchecked" }) public static TableTagBean getFromParameter(HttpServletRequest request) throws ServiceException { String start = request.getParameter("start"); String limit = request.getParameter("limit"); String asc = request.getParameter("dir"); String orderBy = request.getParameter("sort"); int page = (start != null) ? Integer.parseInt(start) : 0; int pageSize = (limit != null) ? Integer.parseInt(limit) : 30; boolean isAsc = "ASC".equals(asc); TableTagBean ttb = new TableTagBean(); ttb.setPage(page); ttb.setPageSize(pageSize); ttb.setOrderBy(orderBy); ttb.setAsc(isAsc); Map<String, String[]> m = request.getParameterMap(); String isEncodeURI = request.getParameter("isEncodeURI"); if (m != null) { for (Entry entry : m.entrySet()) { String key = (String)entry.getKey(); Object[] value = (Object[])entry.getValue(); // if("Y".equals(isEncodeURI)){ // String v= java.net.URLDecoder.decode(value[0].toString(), "UTF-8"); // ttb.getCondition().put(key, (value[0] == null) ? null :v); // }else{ ttb.getCondition().put(key, (value[0] == null) ? null : value[0].toString()); // } } } return ttb; } }
调用之处:
@RequestMapping("/listAgentAwaitRepor") public List<DepartmentOfficeDTO> listAgentAwaitRepor(HttpServletRequest request) throws ServiceException { TableTagBean ttb = TableTagBean.getFromParameter(request); return oldAgentAwaitReportSearchFacade.list(ttb); }
取值之处:
String titleName = ttb.getCondition().get("titleName"); if(!GenericValidator.isBlankOrNull(titleName)) { sql.append(" and biz.biz_title like :bizTitle "); sqlParams.put("bizTitle", "%"+titleName.trim()+"%"); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Spring实战之XML与JavaConfig的混合配置详解
大家都知道Spring的显示配置方式有两种,一种是基于XML配置,一种是基于JavaConfig的方式配置。那么下这篇文章主要给大家分别介绍如何在JavaConfig中引用XML配置的bean以及如何在XML配置中引用JavaConfig,需要的朋友可以参考下。2017-07-07springboot集成普罗米修斯(Prometheus)的方法
这篇文章主要介绍了springboot集成普罗米修斯(Prometheus)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-08-08Eclipse/MyEclipse转IntelliJ IDEA完全攻略(图文)
这篇文章主要介绍了Eclipse/MyEclipse转IntelliJ IDEA完全攻略(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-01-01
最新评论