由于在与前端对接接口时,动态排序的需求较多,导致代码结构混乱,严重影响了后端的代码质量,并且修改频繁。参考了 Ruoyi 的分页排序插件 startPage
,我对其进行了改进,开发出了自己的 startPagePlus
。
1、参考Ruoyi本身的startPage。在
BaseController下添加 startPagePlus
。
/**
* 设置请求分页数据
*/
protected void startPage()
{
PageUtils.startPage();
}
/**
* 设置请求分页数据Plus
*/
protected void startPagePlus()
{
PageUtils.startPagePlus();
}
2、在Pageutils中添加startPagePlus方法.
/**
* 设置请求分页数据
*/
public static void startPage()
{
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
Boolean reasonable = pageDomain.getReasonable();
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
}
/**
* 设置请求分页数据
*/
public static void startPagePlus()
{
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderByPlus());
Boolean reasonable = pageDomain.getReasonable();
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
}
3、引入getOrderByPlus()方法
public String getOrderBy() {
if (StringUtils.isEmpty(orderByColumn)) {
return "";
}
return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
}
public String getOrderByPlus() {
if (StringUtils.isEmpty(orderByColumn)) {
return "";
}
List<String> strList = Arrays.stream(orderByColumn.split(",")).collect(Collectors.toList());
List<String> isAsc = Arrays.stream(this.isAsc.split(",")).collect(Collectors.toList());
return IntStream.range(0, Math.max(strList.size(), isAsc.size()))
.mapToObj(i -> StringUtils.toUnderScoreCase(strList.get(i)) + " " + (i < isAsc.size() ? isAsc.get(i) : "asc"))
.collect(Collectors.joining(", "));
}