master
parent
7334501440
commit
27c4b8614c
|
|
@ -14,6 +14,7 @@ public class PageTableHandler {
|
|||
|
||||
private CountHandler countHandler;
|
||||
private ListHandler listHandler;
|
||||
private OrderHandler orderHandler;
|
||||
|
||||
public PageTableHandler(CountHandler countHandler, ListHandler listHandler) {
|
||||
super();
|
||||
|
|
@ -21,12 +22,20 @@ public class PageTableHandler {
|
|||
this.listHandler = listHandler;
|
||||
}
|
||||
|
||||
public PageTableHandler(CountHandler countHandler, ListHandler listHandler, OrderHandler orderHandler) {
|
||||
this(countHandler, listHandler);
|
||||
this.orderHandler = orderHandler;
|
||||
}
|
||||
|
||||
public PageTableResponse handle(PageTableRequest dtRequest) {
|
||||
int count = 0;
|
||||
List<?> list = null;
|
||||
|
||||
count = this.countHandler.count(dtRequest);
|
||||
if (count > 0) {
|
||||
if (orderHandler != null) {
|
||||
dtRequest = orderHandler.order(dtRequest);
|
||||
}
|
||||
list = this.listHandler.list(dtRequest);
|
||||
}
|
||||
|
||||
|
|
@ -44,4 +53,8 @@ public class PageTableHandler {
|
|||
public interface CountHandler {
|
||||
int count(PageTableRequest request);
|
||||
}
|
||||
|
||||
public interface OrderHandler {
|
||||
PageTableRequest order(PageTableRequest request);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
package com.boot.security.server.utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.ibatis.mapping.ResultMap;
|
||||
import org.apache.ibatis.mapping.ResultMapping;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import com.boot.security.server.page.table.PageTableRequest;
|
||||
|
||||
public class ColumnProUtil {
|
||||
|
||||
private static String DEFAULT_ID = "BaseResultMap";
|
||||
|
||||
/**
|
||||
* 获取java类属性和表字段对应关系
|
||||
*
|
||||
* @param dao
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, String> getColumnPro(Class<?> dao, String... id) {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
|
||||
SqlSessionFactory sessionFactory = SpringUtil.getBean(SqlSessionFactory.class);
|
||||
ResultMap resultMap = sessionFactory.getConfiguration()
|
||||
.getResultMap(dao.getName() + "." + (id.length == 0 ? DEFAULT_ID : id[0]));
|
||||
if (resultMap != null) {
|
||||
List<ResultMapping> list = resultMap.getResultMappings();
|
||||
|
||||
list.parallelStream().forEach(rm -> {
|
||||
String column = rm.getColumn();
|
||||
String pro = rm.getProperty();
|
||||
if (StringUtils.isNoneBlank(column) && StringUtils.isNotBlank(pro)) {
|
||||
map.put(pro, column);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将java类属性替换为表字段
|
||||
*
|
||||
* @param request
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
public static String pro2Column(PageTableRequest request, Map<String, String> map) {
|
||||
String orderBy = (String) request.getParams().get("orderBy");
|
||||
if (StringUtils.isNoneBlank(orderBy) && !CollectionUtils.isEmpty(map)) {
|
||||
for (String pro : map.keySet()) {
|
||||
String val = map.get(pro);
|
||||
if (StringUtils.isNoneBlank(val)) {
|
||||
orderBy = orderBy.replace(pro, val);
|
||||
}
|
||||
}
|
||||
|
||||
request.getParams().put("orderBy", orderBy);
|
||||
}
|
||||
|
||||
return orderBy;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue