久久精品123,午夜国产欧美理论在线播放,国产精品影视天天线,国内自拍亚洲

您的位置:首頁>新聞 > 創業 >

MyBatis-Plus 實現動態字段排序 今日熱議

2023-06-23 10:04:16    來源:博客園


(資料圖片僅供參考)

場景

雖然前端能根據返回的數組進行對字段的排序,但也僅局限于實現當前頁的排序,無法滿足全部數據的排序,所以需要走接口的查詢進行排序,獲取最全的排序數據。

業務需求

思路

  1. 前端需傳遞排序的字段,該字段是正序還是倒敘。可能存在多個,所以字段為字符串數組,可以通過逗號分開。
  2. 后端拿到參數后,如果字段名是駝峰命名,需要轉為小寫字母+下劃線命名。
  3. 將處理后的字段進行排序sql上的拼接處理后,拼接到 order by 語句后面,得到order by語句。
  4. 根據MyBatis-Plus的 last方法,將處理的order by語句進行拼接到查詢sql語句后面。

實現

  1. 前端傳遞的參數格式為:
{  "sort": "userName,updateTime",  "order": "asc,desc"}
  1. 后端接收排序對象 Sorter,那個請求查詢用到自定義排序就繼承該類:
import io.swagger.annotations.ApiModelProperty;import lombok.Data;/** 1. 基礎排序對象,包含排序字段和排序方式 */@Datapublic class Sorter{    @ApiModelProperty(value = "排序字段",example = "userName")    private String sort;    @ApiModelProperty(value = "排序方式",example = "asc/desc")    private String order;    /**     * 根據查詢條件拼接得到order by語句     * @param sorter 分頁查詢條件     * @return String     */    public static String getStatement(Sorter sorter)    {        String sort;        String[] sortArray = {};        String[] orderArray = {};        String order = sorter.getOrder();        String sortColumn = sorter.getSort();        StringBuilder statement = new StringBuilder();        // 多字段排序        if (StringUtils.isNotEmpty(sortColumn))        {            // 駝峰命名轉為下劃線            sort = StringUtils.toUnderScoreCase(sortColumn);            if (sort.contains(",")) {                sortArray = sort.split(",");            }        }        else        {            return "";        }        if (StringUtils.isNotEmpty(order))        {            if (order.contains(",")) {                orderArray = order.split(",");            }        }        else        {            return "";        }        if (sortArray.length > 0 && orderArray.length > 0)        {            int length = sortArray.length;            for (int i = 0; i < length; i++) {                statement.append(sortArray[i]);                statement.append(" ");                statement.append(orderArray[i]);                if (i < length - 1 ) {                    statement.append(", ");                }            }        }        else        {            // " #{sort} #{order}“            statement.append(sort);            statement.append(" ");            statement.append(order);        }        return statement.toString();    }    /**     * 根據查詢條件拼接得到order by語句     * @param sorter 分頁查詢條件     * @return String     */    public static String getOrderByStatement(Sorter sorter)    {        String statement = getStatement(sorter);        if (StringUtils.isNotEmpty(statement))        {            return " order by " + statement;        }        else        {            return statement;        }    }}
  1. 處理字段駝峰式的工具類:
/** 3. 字符串工具類 4.  5. @author lcl */public class StringUtils extends org.apache.commons.lang3.StringUtils{    /** 下劃線 */    private static final char SEPARATOR = "_";    /**     * * 判斷一個字符串是否為非空串     *     * @param str String     * @return true:非空串 false:空串     */    public static boolean isNotEmpty(String str)    {        return !isEmpty(str);    }    /**     * 駝峰轉下劃線命名     */    public 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(SEPARATOR);            }            else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)            {                sb.append(SEPARATOR);            }            sb.append(Character.toLowerCase(c));        }        return sb.toString();    }}
  1. 請求查詢的入參對象繼承 Sorter排序對象:
入參對象
  1. Mapper層直接調用last在sql尾拼接語句方法,將SortergetOrderByStatement(Sorter sorter)方法傳入:
語句拼接

結果

測試排序

關鍵詞:

相關閱讀

久久精品123,午夜国产欧美理论在线播放,国产精品影视天天线,国内自拍亚洲
伊人婷婷欧美激情| 欧美成人伊人久久综合网| 91久久在线视频| 国产精品久久久久影院色老大| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美一区二区三区极速播放| 久久欧美中文字幕| 国产欧美精品一区二区三区介绍| 国产精品久久久久久久久久免费| 国产精品免费视频观看| 日韩一区二区精品葵司在线| 亚洲免费一区二区| 欧美一区二区三区四区在线观看地址| 欧美一区二区在线看| 黄色日韩网站| 国产欧美精品xxxx另类| 一区二区三区产品免费精品久久75| 亚洲天堂男人| 国产日韩免费| 免费观看在线综合色| 亚洲蜜桃精久久久久久久| 国产精品视频免费观看| 久久手机免费观看| 欧美国产日韩一区| 午夜久久久久久久久久一区二区| 欧美午夜免费影院| 欧美在线精品一区| 欧美无砖砖区免费| 国产农村妇女毛片精品久久麻豆| 一区二区在线视频观看| 黄色影院成人| 老鸭窝亚洲一区二区三区| 欧美一级淫片aaaaaaa视频| 亚洲欧美成人一区二区三区| 欧美日韩三级一区二区| 亚洲黄色免费网站| 亚洲欧美经典视频| 一本综合久久| 久久久久久国产精品mv| 欧美一区二视频| 久久综合久色欧美综合狠狠| 亚洲第一综合天堂另类专| 国产精品综合av一区二区国产馆| 麻豆九一精品爱看视频在线观看免费| 黄色日韩网站| 亚洲欧美一区二区在线观看| 久久亚洲国产成人| 亚洲精品久久久久久久久久久久久| 国产欧美综合一区二区三区| 国产亚洲欧美一区| 曰本成人黄色| 亚洲国产高清一区| 亚洲视频在线观看视频| 欧美色视频日本高清在线观看| 影音先锋中文字幕一区二区| 激情国产一区二区| av不卡免费看| 久久久青草婷婷精品综合日韩| 欧美亚洲三级| 亚洲精品色婷婷福利天堂| 亚洲精品欧美极品| 国产日韩成人精品| 国产午夜精品一区理论片飘花| 狠狠爱综合网| 欧美日韩在线视频一区| 国产人久久人人人人爽| 欧美日韩国产一区二区三区| 亚洲剧情一区二区| 亚洲人久久久| 久久精品1区| 欧美激情亚洲精品| 久久久久久自在自线| 国自产拍偷拍福利精品免费一| 亚洲永久在线观看| 日韩一区二区免费高清| 欧美伦理在线观看| 性xx色xx综合久久久xx| 亚洲午夜久久久久久久久电影院| 韩国一区二区在线观看| 亚洲精品一区二区三区四区高清| 99精品99久久久久久宅男| 国产精品综合久久久| 国产毛片精品国产一区二区三区| 亚洲午夜精品17c| 蜜臀va亚洲va欧美va天堂| 国产欧美日韩在线观看| 免费亚洲视频| 欧美成人在线网站| 欧美一区网站| 亚洲影音一区| 激情综合中文娱乐网| 国内精品久久久久久久影视麻豆| 亚洲区一区二区三区| 亚洲一区免费视频| 精品99一区二区三区| 欧美日韩中文字幕在线视频| 欧美小视频在线| 美女精品视频一区| 午夜精品免费| 欧美在线视频免费| 国产一区二三区| 久久久久久亚洲精品杨幂换脸| 欧美 日韩 国产在线| 欧美日韩精品在线播放| 欧美激情第一页xxx| 欧美日韩成人综合在线一区二区| 国产精品久久久久91| 久久综合福利| 欧美日韩成人综合天天影院| 欧美成人69av| 模特精品在线| 亚洲影院色在线观看免费| 国产亚洲欧美一区二区三区| 亚洲在线电影| 欧美三级视频在线观看| 国产午夜精品一区理论片飘花| 欧美日韩亚洲激情| 日韩一区二区免费高清| 亚洲黄色一区二区三区| 欧美一区二区三区视频免费播放| 亚洲精品在线观| 国产精品va| 欧美日韩美女在线| 欧美一级在线视频| 日韩视频免费观看高清完整版| 欧美日韩国产综合视频在线| 久久成人综合视频| 国产精品资源在线观看| 国产一区二区视频在线观看| 国产精品网站在线| 欧美极品在线视频| 久久精品99无色码中文字幕| 欧美午夜久久久| 欧美色图天堂网| 欧美成人高清视频| 欧美精品一区二| 亚洲黄色小视频| 久久精品亚洲一区二区三区浴池| 亚洲国产欧美一区| 99在线精品视频在线观看| 欧美特黄a级高清免费大片a级| 激情五月综合色婷婷一区二区| 国产精品v一区二区三区| 亚洲啪啪91| 在线观看视频一区| 久久精品欧美日韩| 国内精品久久久久久久影视蜜臀| 午夜精品一区二区在线观看| 国产精品青草久久| 欧美国产第二页| 欧美日韩精品二区| 欧美一区二区三区四区在线观看| 欧美亚洲综合久久| 黄色精品一区| 久久久精品五月天| 亚洲欧美日韩综合国产aⅴ| 亚洲欧洲一区二区三区| 国产一区二区三区久久悠悠色av| 久久五月激情| 久久麻豆一区二区| 亚洲精品无人区| 国产精品香蕉在线观看| 美女视频网站黄色亚洲| 欧美v亚洲v综合ⅴ国产v| 亚洲精品九九| 欧美人与禽猛交乱配| 国产精品美女xx| 在线一区二区三区做爰视频网站| 亚洲高清在线精品| 国产一区二区看久久| 一本色道精品久久一区二区三区| 欧美日韩高清在线观看| 久久综合伊人77777蜜臀| 欧美激情无毛| 国产欧美69| 国产精品一区二区在线观看网站| 亚洲一二三区在线| 久久精品在线播放| 欧美无乱码久久久免费午夜一区| 欧美www视频在线观看| 免费久久精品视频| 国产主播在线一区| 国产欧美日韩亚洲一区二区三区| 国产老女人精品毛片久久| 欧美激情精品久久久久久蜜臀| 国产一区二区三区在线观看网站| 一区二区三区在线免费视频| 国产精品欧美日韩久久| 欧美日本高清视频| 欧美女人交a| 亚洲美女毛片| 欧美激情欧美狂野欧美精品| 欧美日韩系列| 欧美日韩伦理在线免费| 欧美凹凸一区二区三区视频| 久久国产色av| 欧美少妇一区二区| 亚洲国产欧美在线| 日韩视频在线观看| 国产精品视频专区|