欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatisPlus分頁的同時(shí)指定排序規(guī)則說明

 更新時(shí)間:2020年12月02日 14:39:36   作者:梁云亮  
這篇文章主要介紹了MyBatisPlus分頁的同時(shí)指定排序規(guī)則說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

分頁配置

MyBatis Plus要想使用分頁,需要添加如下配置:

@Configuration
@ConditionalOnClass(value = {PaginationInterceptor.class})
public class MybatisPlusConfig {

 /**
 * 分頁插件
 * @return
 */
 @Bean
 public PaginationInterceptor paginationInterceptor() {
 PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
 return paginationInterceptor; //返回分布攔截器
 }

}

指定排序規(guī)則:

方法一

public PageBean<Category> listPage(int pageNum, int pageSize) {
 IPage<Category> page = new Page<>(pageNum,pageSize);
 QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
 queryWrapper.eq("state",1)
 .orderByDesc("level");
 IPage<Category> categoryIPage = categoryMapper.selectPage(page, queryWrapper);
 return PageBean.init(categoryIPage);
}

方法二(不建議)

public PageBean<Category> listPage(int pageNum, int pageSize) {
 IPage<Category> page = new Page<>(pageNum,pageSize);
 QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
 queryWrapper.eq("state",1)
 .orderBy("level")
 .last("desc"); // 手動把sql拼接到最后(有sql注入的風(fēng)險(xiǎn),請謹(jǐn)慎使用)
 IPage<Category> categoryIPage = categoryMapper.selectPage(page, queryWrapper);
 return PageBean.init(categoryIPage);
}

補(bǔ)充知識:解決mybatis-plus排序異常:failed to concat orderBy from IPage, exception=null

解決方案

String sql = "xxx"; // 放入不能正常進(jìn)行排序的SQL語句

CCJSqlParserUtil.parse(sql); // 調(diào)用該方法,查看報(bào)錯(cuò)信息

根據(jù)parse方法執(zhí)行時(shí)所拋出的異常信息中的line和column,定位出SQL語句中有問題的那一塊代碼,然后進(jìn)行修正

將修正過后的SQL語句放入mapper中

注意,不要只看line和column給出位置的代碼,要把其位置左右兩邊的代碼也進(jìn)行排查。

問題復(fù)現(xiàn)

pom.xml

<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.0.8.RELEASE</version>
 <relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
 <java.version>1.8</java.version>
</properties>
<dependencies>
 ...
 <!-- mysql -->
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <scope>runtime</scope>
 <version>5.1.48</version>
 </dependency>

 <!-- mybatis -->
 <dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.2.0</version>
 </dependency>
 ...
</dependencies>

service層

Page<UserVO> page = new Page<>(pageNum, pageSize); // 構(gòu)建分頁對象
page.setOrders(List<OrderItem>); // 設(shè)入排序項(xiàng)
userMapper.selectList(page); // 調(diào)用mybatis進(jìn)行查詢

dao層

IPage<UserVO> selectList(page);

mapper

<mapper>
 <select id="selectList" resultType="com.demo.springboottest.vo.UserVO">
 SELECT CONCAT(u.id, '/', u.group) AS groups FROM `user` u
 </select>
</mapper>

執(zhí)行selectList方法后,控制臺出現(xiàn):

failed to concat orderBy from IPage, exception=null

返回結(jié)果數(shù)據(jù)也沒有按預(yù)期進(jìn)行排序

排查過程

為了定位failed to concat orderBy from IPage錯(cuò)誤信息的輸出位置:

將mybatis-plus的日志配置修改為

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl

將spring-boot日志輸出格式配置為

logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n

根據(jù)控制臺輸出failed to concat orderBy from IPage日志信息中的類名,定位到mybatis-plus-extension-3.2.0.jar中

com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor類的concatOrderBy方法

調(diào)試過程

對concatOrderBy方法的執(zhí)行過程進(jìn)行debug,得知在調(diào)用CCJSqlParserUtil的parse方法對sql語句進(jìn)行解析時(shí)拋出了JSQLParserException異常

concatOrderBy方法對上述異常進(jìn)行捕獲,并打印日志信息:

failed to concat orderBy from IPage, exception

解決過程

對SQL進(jìn)行修改,手動調(diào)用CCJSqlParserUtil的parse方法對修改后的語句進(jìn)行調(diào)試

調(diào)試沒問題后,將修正過的SQL語句放入mapper文件中

修正過后的SQL語句

SELECT CONCAT(u.id, '/', u.`group`) AS groups FROM `user` u

以上這篇MyBatisPlus分頁的同時(shí)指定排序規(guī)則說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SWT(JFace) 圖片瀏覽器 實(shí)現(xiàn)代碼

    SWT(JFace) 圖片瀏覽器 實(shí)現(xiàn)代碼

    SWT(JFace)小制作:圖片瀏覽器
    2009-06-06
  • Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串

    Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串

    這篇文章主要介紹了Java中使用異或運(yùn)算符實(shí)現(xiàn)加密字符串,本文直接給出實(shí)現(xiàn)代碼,以及運(yùn)算結(jié)果加密實(shí)例,需要的朋友可以參考下
    2015-06-06
  • 你知道怎么用Spring的三級緩存解決循環(huán)依賴嗎

    你知道怎么用Spring的三級緩存解決循環(huán)依賴嗎

    這篇文章主要為大家詳細(xì)介紹了Spring的三級緩存解決循環(huán)依賴,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • flink進(jìn)階富函數(shù)生命周期介紹

    flink進(jìn)階富函數(shù)生命周期介紹

    這篇文章主要為大家介紹了flink進(jìn)階富函數(shù)生命周期的舉例介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • java實(shí)現(xiàn)聯(lián)機(jī)五子棋

    java實(shí)現(xiàn)聯(lián)機(jī)五子棋

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)聯(lián)機(jī)五子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • JAVA中堆、棧,靜態(tài)方法和非靜態(tài)方法的速度問題

    JAVA中堆、棧,靜態(tài)方法和非靜態(tài)方法的速度問題

    這篇文章主要介紹了JAVA中堆、棧,靜態(tài)方法和非靜態(tài)方法的速度問題,堆和棧得速度性能分析多角度給大家分析,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • 淺談Spring Boot中如何干掉if else的方法

    淺談Spring Boot中如何干掉if else的方法

    這篇文章主要介紹了Spring Boot中如何干掉if else的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • idea指定maven的settings文件不生效的問題解決

    idea指定maven的settings文件不生效的問題解決

    本文主要介紹了idea指定maven的settings文件不生效的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • java爬蟲模擬登陸的實(shí)例詳解

    java爬蟲模擬登陸的實(shí)例詳解

    在本篇文章里小編給大家分享的是一篇關(guān)于java爬蟲模擬登陸的實(shí)例詳解內(nèi)容,有興趣的朋友們可以參考學(xué)習(xí)下。
    2021-01-01
  • Java中TreeSet、HashSet、Collection重寫比較器的實(shí)現(xiàn)

    Java中TreeSet、HashSet、Collection重寫比較器的實(shí)現(xiàn)

    比較器是一種可以對集合或數(shù)組中的元素按照自定義的方式進(jìn)行排序的對象,本文主要介紹了Java中TreeSet、HashSet、Collection重寫比較器的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-08-08

最新評論