T - public class CommonDao<T> extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
protected org.mybatis.spring.SqlSessionTemplate |
sqlSessionTemplate |
| 构造器和说明 |
|---|
CommonDao() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
execute(String sql)
执行sql语句
|
Map<String,Object> |
parseGridFilter(QueryFilter queryFilter)
解析easyui grid 过滤、排序规则
|
List |
query(String sql)
查询列表
|
PageList |
query(String sql,
Page page)
查询分页列表
|
PageList |
queryByCusPage(String sql,
String countSql,
Map<String,Object> params,
Integer startIndex,
Integer pageSize)
自定义SQL 自分页,不可自动过滤排序grid规则,需要用户自己动手构建grid过滤排序规则,
详细运用请看:com.hotent.demo.querysql.controller 因为用户自定义分页的话,会造出Grid的过滤规则和统计规则出错,即自定义分页的语句必须在过滤条件的后面 例如:select * from (select * from xog_user limit 0,10 ) where sex like '%男%' 和 select * from (select * from xog_user where sex like '%男%' limit 0,10 )的两种不同 结果集 用户自分页可以优化查询语句的执行效率,例如 {@code select * from (select t. |
List<T> |
queryForList(String sql,
QueryFilter queryFilter,
Map<String,Object> params)
自定义SQL,分页由系统,可自动过滤排序grid规则,详细运用请看:com.hotent.demo.querysql.controller
QueryFilter queryFilter = getQuerFilter(request);
String sql = "SELECT * FROM xog_user WHERE 1=#{test} order by user_id_ ";
Map<String, Object> params = new HashMap<String, Object>();
params.put("test", 1);
List list = commonDao.queryForList(sql, queryFilter, params);
return new PageJson(list);
|
PageList<T> |
queryForListPage(String sql,
QueryFilter queryFilter,
Map<String,Object> params)
自定义SQL,分页由系统,可自动过滤排序grid规则,详细运用请看:com.hotent.demo.querysql.controller
QueryFilter queryFilter = getQuerFilter(request);
String sql = "SELECT * FROM xog_user WHERE 1=#{test} order by user_id_ ";
Map<String, Object> params = new HashMap<String, Object>();
params.put("test", 1);
PageList list = commonDao.queryForListPage(sql, queryFilter, params);
return new PageJson(list);
|
public void execute(String sql)
sql - voidpublic List<T> queryForList(String sql, QueryFilter queryFilter, Map<String,Object> params)
QueryFilter queryFilter = getQuerFilter(request);
String sql = "SELECT * FROM xog_user WHERE 1=#{test} order by user_id_ ";
Map<String, Object> params = new HashMap<String, Object>();
params.put("test", 1);
List list = commonDao.queryForList(sql, queryFilter, params);
return new PageJson(list);
sql - queryFilter - params - public PageList<T> queryForListPage(String sql, QueryFilter queryFilter, Map<String,Object> params)
QueryFilter queryFilter = getQuerFilter(request);
String sql = "SELECT * FROM xog_user WHERE 1=#{test} order by user_id_ ";
Map<String, Object> params = new HashMap<String, Object>();
params.put("test", 1);
PageList list = commonDao.queryForListPage(sql, queryFilter, params);
return new PageJson(list);
sql - queryFilter - params - public PageList queryByCusPage(String sql, String countSql, Map<String,Object> params, Integer startIndex, Integer pageSize)
用户自分页可以优化查询语句的执行效率,例如select * from (select t.*,rownum as rn from xog_user t) a where a.rn >=1 and a.rn<=10和select * from (select t.*,rownum as rn from xog_user t where rownum <=10) a where a.rn>=1
后者要比前者快多 mysql: QueryFilter queryFilter = getQueryFilter(request); int startIndex = queryFilter.getPage().getStartIndex(); int pageSize = queryFilter.getPage().getPageSize(); Map<String, Object> params = commonDao.parseGridFilter(queryFilter); params.put("test", 1); // 自定义的参数 params.put("startIndex", startIndex); // 设置分页参数 params.put("pageSize", pageSize); // 设置分页参数 String whereSql = (String) params.get("whereSql"); // 字段过滤规则 String orderBySql = (String) params.get("orderBySql"); // 字段排序规则 StringBuffer sbf = new StringBuffer("SELECT * FROM xog_user"); sbf.append(" WHERE 1=#{test} "); if (StringUtil.isNotEmpty(whereSql)) { sbf.append(" and ").append(whereSql); // grid过滤的固定写法 } if (StringUtil.isNotEmpty(orderBySql)) { sbf.append(" ORDER BY ").append(orderBySql); // grid过滤的固定写法 } else { sbf.append(" ORDER BY user_id_ "); } String querySql = sbf.toString() + " limit #{startIndex},#{pageSize} "; String countSql = sbf.toString(); PageList list = commonDao.queryByCusPage(querySql, countSql, params, startIndex, pageSize); return new PageJson(list); oracle:QueryFilter queryFilter = getQueryFilter(request); int startIndex = queryFilter.getPage().getStartIndex(); int pageSize = queryFilter.getPage().getPageSize(); Map<String, Object> params = commonDao.parseGridFilter(queryFilter); params.put("test", 1); // 自定义的参数 params.put("startIndex", startIndex); // 设置分页参数 params.put("pageSize", pageSize); // 设置分页参数 String whereSql = (String) params.get("whereSql"); // 字段过滤规则 String orderBySql = (String) params.get("orderBySql"); // 字段排序规则 StringBuffer sbf = new StringBuffer("SELECT * FROM ( SELECT T.*,ROWNUM AS RN FROM SYS_USER T "); sbf.append(" WHERE 1=#{test} "); if (StringUtil.isNotEmpty(whereSql)) { sbf.append(" and ").append(whereSql); // grid过滤的固定写法 } if (StringUtil.isNotEmpty(orderBySql)) { sbf.append(" ORDER BY ").append(orderBySql); // grid过滤的固定写法 } else { sbf.append(" ORDER BY user_id_ "); }String querySql = sbf.toString() + " ROWNUM <=10) A WHERE A.RN>=1 ";String countSql = sbf.toString() + ")"; PageList list = commonDao.queryByCusPage(querySql, countSql, params, startIndex, pageSize); return new PageJson(list);
sql - countSql - params - startIndex - pageSize - public Map<String,Object> parseGridFilter(QueryFilter queryFilter)
queryFilter - Copyright © 2018. All rights reserved.