java封装前端查询条件通用版
作者:jackethans 发布时间:2023-06-24 12:06:15
标签: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()+"%");
}
来源:https://blog.csdn.net/jackethans/article/details/84000286
0
投稿
猜你喜欢
- 前言在数据结构算法设计中,或者一个方法的具体实现的时候,有一种方法叫做“递归”,这种方法在思想上并不是特别难,但是实现起来还是有一些需要注意
- springboot集成mybatis关键代码如下:1,添加pom引用 <dependency> <group
- Java单例模式的实现,对java 单例模式的几种实现方法进行了整理:单例模式好多书上都是这么写的:public class SingleT
- jpa EntityManager复杂查询概念EntityManager:EntityManager是JPA中用于增删改查的接口,它的作用相
- 本文实例为大家分享了Java实现五子棋网络版的具体代码,供大家参考,具体内容如下需求分析:对于网络五子棋而言,在普通五子棋的基础上需要添加以
- JVM 的主要作用是什么?JVM 就是 Java Virtual Machine(Java虚拟机)的缩写,JVM 屏蔽了与具体操作系统平台相
- 本文实例为大家分享了java转树形结构工具类的具体代码,供大家参考,具体内容如下import com.alibaba.fastjson.JS
- 相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天给大家分享我个人总结的一些加密算法:常见的加密方式分为可逆和不可逆两种
- 判断参数是否为空并作为查询条件@Override public Page<DemandEntity>
- 前言前阵子有同学反馈Flutter中的http请求无法通过fiddler抓包,作者喜欢使用Charles抓包工具,于是抽时间写了个小demo
- 简介方案对比本处列举表示类型或状态的常用方法的对比。法1:使用数字表示(不推荐)//1:支付宝支付;2:微信支付;3:银行卡支付privat
- 概念是利用锁的机制来实现同步的。互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一
- MongoDBMongoDB作为一种NoSQL数据库产品,其实已经非常著名了。去年,由于MongoDB安全认证的薄弱,上万家公司中招。虽然是
- 前言2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化。在修改之前,我的说法是这样的:就像鲸鱼吃虾米一样,也许
- 免责声明:本教程所有资源均来源于网络;仅用于学习交流,请勿用于任何商业行为;如需要,请使用正版授权;侵权联删。推荐最新 IntelliJ I
- JDK 1.5开始提供ScheduledThreadPoolExecutor类,ScheduledThreadPoolExecutor类继承
- 同步代码块基本语句synchronized (任意对象) {操作共享代码}代码示例public class SellTicket imple
- 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。文件上传概述1、文件上传
- 如下所示:import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.
- synchronized关键字,一般称之为”同步锁“,用它来修饰需要同步的方法和需要同步代码块,默认是当前对象作为锁的对象。同步锁锁的是同一