wei.zhang2 2017-12-29 10:37:44 +08:00
parent 7334501440
commit 27c4b8614c
2 changed files with 83 additions and 0 deletions

View File

@ -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);
}
}

View File

@ -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;
}
}