package com.zd.model.page; import org.apache.commons.lang3.StringUtils; import java.util.Optional; /** * 分页数据 * * @author zd */ public class PageDomain { /** * 当前记录起始索引 */ private Integer pageNum; /** * 每页显示记录数 */ private Integer pageSize; /** * 排序列 */ private String orderByColumn; /** * 排序的方向desc或者asc */ private String isAsc = "asc"; public String getOrderBy() { if (orderByColumn == null || "".equals(orderByColumn)) { return ""; } return toUnderScoreCase(orderByColumn) + " " + isAsc; } public Integer getPageNum() { return Optional.ofNullable(pageNum).orElse(1); } public void setPageNum(Integer pageNum) { this.pageNum = pageNum; } public Integer getPageSize() { return Optional.ofNullable(pageSize).orElse(10); } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public String getOrderByColumn() { return orderByColumn; } public void setOrderByColumn(String orderByColumn) { this.orderByColumn = orderByColumn; } public String getIsAsc() { return isAsc; } public void setIsAsc(String isAsc) { if (StringUtils.isNotEmpty(isAsc)) { // 兼容前端排序类型 if ("ascending".equals(isAsc)) { isAsc = "asc"; } else if ("descending".equals(isAsc)) { isAsc = "desc"; } this.isAsc = isAsc; } } private static String toUnderScoreCase(String str) { if (str == null) { return null; } StringBuilder sb = new StringBuilder(); // 前置字符是否大写 boolean preCharIsUpperCase = true; // 当前字符是否大写 boolean curreCharIsUpperCase = true; // 下一字符是否大写 boolean nexteCharIsUpperCase = true; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (i > 0) { preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); } else { preCharIsUpperCase = false; } curreCharIsUpperCase = Character.isUpperCase(c); if (i < (str.length() - 1)) { nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); } if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { sb.append('_'); } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { sb.append('_'); } sb.append(Character.toLowerCase(c)); } return sb.toString(); } }