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()+"%");
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈java实现mongoDB的多条件查询

    需求:在mongDB客户端,我们很容易实现多条件查询,那么使用java操作时怎么实现呢? 客户端代码: db.url.find({index:4,status:0,url:{$regex:"2016"}}).limit(1) java代码主要用到DBObject BasicDBObject doc5 = new BasicDBObject(); doc5.put("index", 3); doc5.put("status", 0); //doc5

  • datatables 带查询条件java服务端分页处理实例

    使用datatables自带后台查询 前台代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico" rel="external nof

  • 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.HttpServletRe

  • JSP实现带查询条件的通用分页组件

    分页功能的代码就是这样的,在需要展示列表的页面,我们基本都需要加上分页功能,如果某天boss想要修改分页功能的样式,我们不能去一个一个的改吧. 下边给大家分享一个自己封装的通用分页组件. 1. 效果展示 2. 使用方式 1 )在需要显示分页信息的位置,直接引入pagination.jsp页面. <!-- 分页内容 --> <%@include file="/WEB-INF/decorators/pagination.jsp" %> <!-- 分页内容结束

  • java执行SQL语句实现查询的通用方法详解

    完成SQL查询 并将查询结果放入Vector容器,以便其他程序使用 /* * 执行sql查询语句 */ public static <T> Vector<T> executeQuery(Class<T> clazz, String sql, Object... args) { Connection conn = null; PreparedStatement preparedstatement = null; ResultSet rs = null; Vector<

  • Java封装数组实现在数组中查询元素和修改元素操作示例

    本文实例讲述了Java封装数组实现在数组中查询元素和修改元素操作.分享给大家供大家参考,具体如下: 前言:在上一小节中,我们已经对如何往数组中添加一个元素的方法进行了编写,此节中我们就如何查询出数组中元素与修改元素的方法进行编写. 在数组中,数据是存储在私有变量data中的,若我们想知道打印输出一些关于data中数据相关信息,我们可以使用toString()方法,在java中,该方法需要每个类自定义重写实现,针对该类,自定义如下: @Override public String toString

  • 存储过程实现(可带查询条件/万能分页/通用)

    假设数据库中有张表,表名是UserName,字段分别是ID(int),Name(nvarchar),Age(int). 如果不带查询条件存储过程是: 复制代码 代码如下: CREATE PROCEDURE [dbo].[UserName] @pageIndex int, @pageSize int AS declare @min int; declare @max int; set @min=@pageSize*(@pageIndex-1)+1; set @max=@pageSize*@page

  • mybatis-plus QueryWrapper自定义查询条件的实现

    mybatis-plus框架功能很强大,把很多功能都集成了,比如自动生成代码结构,mybatis crud封装,分页,动态数据源等等,附上官网链接https://mp.baomidou.com/,github上有代码例子,国内小伙伴推荐码云https://gitee.com/baomidou/mybatis-plus.  但是,其中还是有些小坑,文档也没有涉及的很全面,碰到问题,百度或者发issue,能力强的还是直接看源码好,一切答案都在源码中. 版本推荐用3.1.0,3.1.1及以上版本有bu

  • Mybatis 实现动态组装查询条件,仿SQL模式

    目的: 以前比较习惯使用Hibernate,后来觉得mybatis不能按我想要的自动组装为SQL查询条件,所以提供该工具类: 效果图: 如图所示,根据条件自动组装查询条件,下面来说一下实现方法: 1. ServiceImpl书写注意项 Page<SysLogin> resultPage = null; try { PageHelper.startPage(pager.getCurrentPage(), pager.getPageSize()); // 判断是否有分页 if (ObjectHel

  • 分享5个Java接口性能提升的通用技巧

    目录 前言 1. 并发调用 2. 避免大事务 3. 添加合适的索引 4. 返回更少的数据 5. 使用缓存 前言 作为后端开发人员,我们总是在编写各种API,无论是为前端web提供数据支持的HTTP REST API ,还是提供内部使用的RPC API.这些API在服务初期可能表现不错,但随着用户数量的增长,一开始响应很快的API越来越慢,直到用户抱怨:“你的系统太糟糕了.” 我只是浏览网页.为什么这么慢?”.这时候你就需要考虑如何优化你的API性能了. 要想提高你的API的性能,我们首先要知道哪

  • MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查询条件分页

    前几天做一个小小小项目,使用了MVC+Bootstrap,以前做分页都是异步加载Mvc部分视图的方式,因为这个是小项目,就随便一点.一般的列表页面,少不了有查询条件,下面分享下Drapper+PagedList.Mvc支持多查询条件分页的使用经验. 在MVC中我们一般习惯使用强类型Model,通过分析Orders的展示页面,来构建这个Model. 1.查询参数的Model public class OrderQueryParamModel { /// <summary> /// 订单编号 //

随机推荐