public class JHDbKit {
/**
* 获取总数时传入的标识
*/
public static final String GET_COUNT_SIGN = "isGetCount";
/**
* 获取空分页
*/
public static Page emptyPage(Integer pageNumber, Integer pageSize) {
return new Page(new ArrayList(0), pageNumber, pageSize, 0, 0);
}
/**
* 创建page对象
*/
public static Page<Record> page(List<Record> list, Integer pageNumber, Integer pageSize, Integer totalRow) {
if (totalRow == 0) {
return emptyPage(pageNumber, pageSize);
}
int totalPage = (int) (totalRow / pageSize);
if (totalRow % pageSize != 0) {
totalPage++;
}
if (pageNumber > totalPage) {
return new Page(new ArrayList<Record>(0), pageNumber, pageSize, totalPage, (int) totalRow);
}
return new Page(list, pageNumber, pageSize, totalPage, (int) totalRow);
}
/**
* 创建page对象(不统计总数)
*/
public static Page<Record> page(List<Record> list, Integer pageNumber, Integer pageSize) {
return new Page(list, pageNumber, pageSize, 0, 0);
}
/**
* 分页
*
* @param func 数据处理
*/
public static Page<Record> page(SqlPara totalSqlPara, SqlPara selectSqlPara, Integer pageNumber, Integer pageSize,
Consumer<Record> func) {
int totalRow = Db.queryInt(totalSqlPara.getSql(), totalSqlPara.getPara());
if (totalRow == 0) {
return emptyPage(pageNumber, pageSize);
}
List list = getPageList(selectSqlPara, pageNumber, pageSize, func);
return page(list, pageNumber, pageSize, totalRow);
}
/**
* 分页(不统计总数)
*
* @param func 数据处理
*/
public static Page<Record> page(SqlPara selectSqlPara, Integer pageNumber, Integer pageSize,
Consumer<Record> func) {
List list = getPageList(selectSqlPara, pageNumber, pageSize, func);
return page(list, pageNumber, pageSize);
}
/**
* 分页
*
* @param countTotal 是否统计总数量
* @param func 数据处理
*/
public static Page<Record> page(String key, Map data, Integer pageNumber, Integer pageSize, boolean countTotal,
Consumer<Record> func) {
if (data == null) {
data = new HashMap();
}
SqlPara selectSqlPara = Db.getSqlPara(key, data);
if (countTotal) {
data.put(GET_COUNT_SIGN, true);
SqlPara totalSqlPara = Db.getSqlPara(key, data);
data.remove(GET_COUNT_SIGN);
return page(totalSqlPara, selectSqlPara, pageNumber, pageSize, func);
} else {
return page(selectSqlPara, pageNumber, pageSize, func);
}
}
/**
* 分页
*
* @param countTotal 是否统计总数量
*/
public static Page<Record> page(String key, Map data, Integer pageNumber, Integer pageSize, boolean countTotal) {
return page(key, data, pageNumber, pageSize, countTotal, null);
}
/**
* 分页
*
* @param func 数据处理
*/
public static Page<Record> page(String key, Map data, Integer pageNumber, Integer pageSize, Consumer<Record> func) {
return page(key, data, pageNumber, pageSize, true, func);
}
/**
* 分页
*/
public static Page<Record> page(String key, Map data, Integer pageNumber, Integer pageSize) {
return page(key, data, pageNumber, pageSize, true, null);
}
/**
* 分页
*
* @param func 数据处理
*/
public static Page<Record> page(String key, Integer pageNumber, Integer pageSize, Consumer<Record> func) {
return page(key, null, pageNumber, pageSize, func);
}
/**
* 分页
*/
public static Page<Record> page(String key, Integer pageNumber, Integer pageSize) {
return page(key, null, pageNumber, pageSize, null);
}
/**
* 获取分页列表
*
* @param func 数据处理
*/
public static List<Record> getPageList(SqlPara sqlPara, Integer pageNumber, Integer pageSize,
Consumer<Record> func) {
List<Record> list = new ArrayList<Record>();
StringBuffer findSql = new StringBuffer(sqlPara.getSql());
int offset = pageSize * (pageNumber - 1);
findSql.append(" limit ").append(offset).append(", ").append(pageSize);
Db.each((Record t) -> {
if (func != null) {
func.accept(t);
}
list.add(t);
return true;
}, findSql.toString(), sqlPara.getPara());
return list;
}
/**
* 获取分页列表
*
* @param func 数据处理
*/
public static List<Record> getPageList(String key, Map data, Integer pageNumber, Integer pageSize,
Consumer<Record> func) {
if (data != null) {
data = new HashMap();
}
SqlPara sqlPara = Db.getSqlPara(key, data);
return getPageList(sqlPara, pageNumber, pageSize, func);
}
/**
* 获取分页列表
*
* @param func 数据处理
*/
public static List<Record> getPageList(String key, Integer pageNumber, Integer pageSize, Consumer<Record> func) {
return getPageList(key, null, pageNumber, pageSize, func);
}
/**
* 查询列表
*
* @param func 数据处理
*/
public static List<Record> find(SqlPara sqlPara, Consumer<Record> func) {
List<Record> list = new ArrayList<Record>();
Db.each((Record t) -> {
if (func != null) {
func.accept(t);
}
list.add(t);
return true;
}, sqlPara.getSql(), sqlPara.getPara());
return list;
}
/**
* 查询列表
*
* @param func 数据处理
*/
public static List<Record> find(String key, Map data, Consumer<Record> func) {
if (data == null) {
data = new HashMap();
}
SqlPara sqlPara = Db.getSqlPara(key, data);
return find(sqlPara, func);
}
/**
* 查询列表
*
* @param func 数据处理
*/
public static List<Record> find(String key, Consumer<Record> func) {
return find(key, null, func);
}
}分页的sql模版写法
select #if(isGetCount) count(*) #else u.user_name,u.user_id,u.org_id,u.user_account, u.is_enable, o.org_name #end from sys_user u #if(!isGetCount || org_name) left join sys_org o on u.org_id = o.org_id #end where 1 = 1 #if(org_name) and o.org_name #like(org_name) #end #if(!isGetCount) order by u.create_time desc #end
有几处改进建议,#if( isGetCount??false ) 这个与 #if( isGetCount ) 其实是等价的,因为 #if ( null ) 等价于 #if ( false )
同理 #if( !(isGetCount??false) ) 也可以改成 #if( !isGetCount )