优化分页封装方法,可自定义分页sql和countsql
This commit is contained in:
parent
681a26ea03
commit
cdd1c0f56a
|
|
@ -51,6 +51,11 @@ public class AopContext {
|
|||
*/
|
||||
private String sql;
|
||||
|
||||
/**
|
||||
* 从前端grid传过来的参数
|
||||
*/
|
||||
private String sqlEx;
|
||||
|
||||
/**
|
||||
* 追加SQL条件(程序自动生成)
|
||||
*/
|
||||
|
|
@ -60,6 +65,16 @@ public class AopContext {
|
|||
* 自定义SQL覆盖默认查询条件
|
||||
*/
|
||||
private String where;
|
||||
|
||||
/**
|
||||
* 自定义列表的sql
|
||||
*/
|
||||
private String sqlStatement;
|
||||
|
||||
/**
|
||||
* 自定义分页数的sql
|
||||
*/
|
||||
private String sqlCount;
|
||||
|
||||
/**
|
||||
* 自定义SQL参数(map形式)
|
||||
|
|
@ -113,7 +128,7 @@ public class AopContext {
|
|||
public void setView(ModelAndView view) {
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
|
||||
public Object getId() {
|
||||
return id;
|
||||
}
|
||||
|
|
@ -138,6 +153,14 @@ public class AopContext {
|
|||
this.sql = sql;
|
||||
}
|
||||
|
||||
public String getSqlEx() {
|
||||
return sqlEx;
|
||||
}
|
||||
|
||||
public void setSqlEx(String sqlEx) {
|
||||
this.sqlEx = sqlEx;
|
||||
}
|
||||
|
||||
public String getCondition() {
|
||||
return condition;
|
||||
}
|
||||
|
|
@ -154,6 +177,22 @@ public class AopContext {
|
|||
this.where = where;
|
||||
}
|
||||
|
||||
public String getSqlStatement() {
|
||||
return sqlStatement;
|
||||
}
|
||||
|
||||
public void setSqlStatement(String sqlStatement) {
|
||||
this.sqlStatement = sqlStatement;
|
||||
}
|
||||
|
||||
public String getSqlCount() {
|
||||
return sqlCount;
|
||||
}
|
||||
|
||||
public void setSqlCount(String sqlCount) {
|
||||
this.sqlCount = sqlCount;
|
||||
}
|
||||
|
||||
public Map<String, Object> getParam() {
|
||||
return param;
|
||||
}
|
||||
|
|
@ -170,4 +209,5 @@ public class AopContext {
|
|||
this.tips = tips;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -361,6 +361,35 @@ public class Db {
|
|||
return getDbManager().paginate(sqlTemplate, clazz, paras, pageNum, pageSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页
|
||||
* @param sqlTemplate sql语句
|
||||
* @param sqlCount count语句
|
||||
* @param clazz 返回类型
|
||||
* @param paras 参数
|
||||
* @param pageNum 页号
|
||||
* @param pageSize 数量
|
||||
* @return
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public static BladePage<Map> paginate(String sqlTemplate, String sqlCount, Object paras, int pageNum, int pageSize){
|
||||
return getDbManager().paginate(sqlTemplate, sqlCount, paras, pageNum, pageSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页
|
||||
* @param sqlTemplate sql语句
|
||||
* @param sqlCount count语句
|
||||
* @param clazz 返回类型
|
||||
* @param paras 参数
|
||||
* @param pageNum 页号
|
||||
* @param pageSize 数量
|
||||
* @return
|
||||
*/
|
||||
public static <T> BladePage<T> paginate(String sqlTemplate, String sqlCount, Class<T> clazz, Object paras, int pageNum, int pageSize){
|
||||
return getDbManager().paginate(sqlTemplate, sqlCount, clazz, paras, pageNum, pageSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否存在
|
||||
*
|
||||
|
|
|
|||
|
|
@ -524,8 +524,36 @@ public class DbManager {
|
|||
* @return
|
||||
*/
|
||||
public <T> BladePage<T> paginate(String sqlTemplate, Class<T> clazz, Object paras, int pageNum, int pageSize){
|
||||
return paginate(sqlTemplate, "", clazz, paras, pageNum, pageSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页
|
||||
* @param sqlTemplate sql语句
|
||||
* @param sqlCount count语句
|
||||
* @param clazz 返回类型
|
||||
* @param paras 参数
|
||||
* @param pageNum 页号
|
||||
* @param pageSize 数量
|
||||
* @return
|
||||
*/
|
||||
public <T> BladePage<Map> paginate(String sqlTemplate, String sqlCount, Object paras, int pageNum, int pageSize){
|
||||
return paginate(sqlTemplate, sqlCount, Map.class, paras, pageNum, pageSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页
|
||||
* @param sqlTemplate sql语句
|
||||
* @param sqlCount count语句
|
||||
* @param clazz 返回类型
|
||||
* @param paras 参数
|
||||
* @param pageNum 页号
|
||||
* @param pageSize 数量
|
||||
* @return
|
||||
*/
|
||||
public <T> BladePage<T> paginate(String sqlTemplate, String sqlCount, Class<T> clazz, Object paras, int pageNum, int pageSize){
|
||||
List<T> rows = getList(sqlTemplate, clazz, paras, pageNum, pageSize);
|
||||
long count = queryInt("SELECT COUNT(*) CNT FROM (" + sqlTemplate + ") a", paras).longValue();
|
||||
long count = queryInt((StrKit.isBlank(sqlCount) ? "SELECT COUNT(*) CNT FROM (" + sqlTemplate + ") a" : sqlCount), paras).longValue();
|
||||
BladePage<T> page = new BladePage<>(rows, pageNum, pageSize, count);
|
||||
return page;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,29 +72,35 @@ public abstract class BaseGridFactory implements IGrid{
|
|||
}
|
||||
|
||||
private Object paginateBySql(String dbName, Integer page, Integer rows, String sqlTemplate, String para, String sort, String order, IQuery intercept, BladeController ctrl) {
|
||||
String statement = "select * from (" + sqlTemplate + ") blade_statement";
|
||||
String sqlex = SqlKeyword.getWhere(para);
|
||||
Map<String, Object> map = getSqlMap(para, sort, order);
|
||||
String statement = "select * from (" + sqlTemplate + ") blade_statement";
|
||||
String orderBy = (Func.isEmpty(map.get(Const.ORDER_BY_STR))) ? " " : (" order by " + Func.toStr(map.get(Const.ORDER_BY_STR)));
|
||||
String sqlCount = "";
|
||||
|
||||
// 查询前拦截
|
||||
AopContext ac = null;
|
||||
if (null != intercept) {
|
||||
ac = new AopContext(ctrl);
|
||||
ac.setSql(statement + sqlex);
|
||||
ac.setSql(sqlTemplate);
|
||||
ac.setSqlEx(sqlex);
|
||||
ac.setCondition("");
|
||||
ac.setSqlStatement("");
|
||||
ac.setSqlCount("");
|
||||
ac.setParam(map);
|
||||
intercept.queryBefore(ac);
|
||||
statement = statement + (StrKit.isBlank(ac.getWhere()) ? (sqlex + ac.getCondition()) : ac.getWhere());
|
||||
sqlCount = ac.getSqlCount();
|
||||
statement = (StrKit.isBlank(ac.getSqlStatement()) ? (statement + (StrKit.isBlank(ac.getWhere()) ? (sqlex + ac.getCondition()) : ac.getWhere()) + orderBy) : ac.getSqlStatement());
|
||||
} else {
|
||||
statement = statement + sqlex;
|
||||
statement = statement + sqlex + orderBy;
|
||||
}
|
||||
|
||||
Object list = null;
|
||||
String orderBy = (Func.isEmpty(map.get(Const.ORDER_BY_STR))) ? " " : (" order by " + Func.toStr(map.get(Const.ORDER_BY_STR)));
|
||||
|
||||
if(StrKit.notBlank(dbName)){
|
||||
list = Db.init(dbName).paginate(statement + orderBy, Map.class, map, page, rows);
|
||||
list = Db.init(dbName).paginate(statement, sqlCount, map, page, rows);
|
||||
} else {
|
||||
list = Db.paginate(statement + orderBy, Map.class, map, page, rows);
|
||||
list = Db.paginate(statement, sqlCount, map, page, rows);
|
||||
}
|
||||
|
||||
// 查询后拦截
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user