最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

分頁(yè)配置

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

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

 /**
 * 分頁(yè)插件
 * @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"); // 手動(dòng)把sql拼接到最后(有sql注入的風(fēng)險(xiǎn),請(qǐng)謹(jǐn)慎使用)
 IPage<Category> categoryIPage = categoryMapper.selectPage(page, queryWrapper);
 return PageBean.init(categoryIPage);
}

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

解決方案

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

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

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

將修正過(guò)后的SQL語(yǔ)句放入mapper中

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

問(wè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)建分頁(yè)對(duì)象
page.setOrders(List<OrderItem>); // 設(shè)入排序項(xiàng)
userMapper.selectList(page); // 調(diào)用mybatis進(jìn)行查詢(xú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方法后,控制臺(tái)出現(xiàn):

failed to concat orderBy from IPage, exception=null

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

排查過(guò)程

為了定位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ù)控制臺(tái)輸出failed to concat orderBy from IPage日志信息中的類(lèi)名,定位到mybatis-plus-extension-3.2.0.jar中

com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor類(lèi)的concatOrderBy方法

調(diào)試過(guò)程

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

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

failed to concat orderBy from IPage, exception

解決過(guò)程

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

調(diào)試沒(méi)問(wèn)題后,將修正過(guò)的SQL語(yǔ)句放入mapper文件中

修正過(guò)后的SQL語(yǔ)句

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

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

相關(guān)文章

  • Java?處理樹(shù)形結(jié)構(gòu)數(shù)據(jù)的過(guò)程

    Java?處理樹(shù)形結(jié)構(gòu)數(shù)據(jù)的過(guò)程

    這篇文章主要介紹了Java?處理樹(shù)形結(jié)構(gòu)數(shù)據(jù)的過(guò)程,本文給大家分析具體實(shí)現(xiàn)過(guò)程,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 使用SpringBoot生成war包的流程步驟

    使用SpringBoot生成war包的流程步驟

    一般情況下,在SpringBoot項(xiàng)目開(kāi)發(fā)完成進(jìn)行服務(wù)器部署時(shí),都是打成JAR包進(jìn)行部署運(yùn)行的,但是在有些情況下也需要將其打成War包使用Tomcat進(jìn)行部署,本篇文章就簡(jiǎn)單介紹一下SpringBoot如何打成War包,需要的朋友可以參考下
    2024-10-10
  • SpringBoot中關(guān)于static和templates的注意事項(xiàng)以及webjars的配置

    SpringBoot中關(guān)于static和templates的注意事項(xiàng)以及webjars的配置

    今天小編就為大家分享一篇關(guān)于SpringBoot中關(guān)于static和templates的注意事項(xiàng)以及webjars的配置,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • SpringBoot實(shí)現(xiàn)接口冪等性的4種方案

    SpringBoot實(shí)現(xiàn)接口冪等性的4種方案

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)接口冪等性的4種方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java?for循環(huán)標(biāo)簽跳轉(zhuǎn)到指定位置的示例詳解

    Java?for循環(huán)標(biāo)簽跳轉(zhuǎn)到指定位置的示例詳解

    這篇文章主要介紹了Java?for循環(huán)標(biāo)簽跳轉(zhuǎn)到指定位置,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Spring的RestTemplata使用的具體方法

    Spring的RestTemplata使用的具體方法

    本篇文章主要介紹了Spring的RestTemplata使用的具體方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • java實(shí)現(xiàn)英文翻譯程序

    java實(shí)現(xiàn)英文翻譯程序

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)英文翻譯程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Spring基于ProxyFactoryBean創(chuàng)建AOP代理

    Spring基于ProxyFactoryBean創(chuàng)建AOP代理

    這篇文章主要介紹了Spring基于ProxyFactoryBean創(chuàng)建AOP代理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java實(shí)現(xiàn)斗地主發(fā)牌系統(tǒng)

    java實(shí)現(xiàn)斗地主發(fā)牌系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)斗地主發(fā)牌系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • java 使用POI合并兩個(gè)word文檔

    java 使用POI合并兩個(gè)word文檔

    這篇文章主要介紹了java 使用POI合并兩個(gè)word文檔的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論

中山市| 万全县| 丹巴县| 司法| 焦作市| 琼结县| 天水市| 泰兴市| 且末县| 涪陵区| 绥棱县| 双鸭山市| 清徐县| 繁昌县| 绿春县| 嘉荫县| 周宁县| 阆中市| 商河县| 北安市| 辛集市| 黔南| 清原| 塔河县| 曲松县| 天门市| 清远市| 通化市| 日土县| 垦利县| 定日县| 原平市| 广州市| 景泰县| 濉溪县| 英德市| 桐梓县| 阿拉善右旗| 玛多县| 牟定县| 应用必备|