Springboot整合mybatisplus時(shí),使用條件構(gòu)造器排序報(bào)錯(cuò)問(wèn)題及解決
Springboot整合mybatisplus使用條件構(gòu)造器排序報(bào)錯(cuò)
異常信息
{
"timestamp": "2022-03-23T12:04:29.797+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Error attempting to get column 'create_time' from result set. Cause: java.sql.SQLFeatureNotSupportedException\n; null; nested exception is java.sql.SQLFeatureNotSupportedException",
"path": "/partJob/list"
}
網(wǎng)上查找得知:
數(shù)據(jù)庫(kù)中的create_time是datetime類型,mybatis-plus生成代碼時(shí)生成的是LocalDateTime單mybatis不支持該類型。
方法一
將實(shí)體類中的createtime改為DATE類型
方法二
調(diào)整Druid版本,升級(jí)到1.1.21
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency>
Mybatis使用IPAGE排序錯(cuò)誤
錯(cuò)誤信息
//分頁(yè)排序
page.setOrders(OrderItem.descs("publish_time"));
報(bào)錯(cuò)信息
failed to concat orderBy from IPage, exception=null
這里”failed to concat orderBy from IPage, exception=null“只是提示你錯(cuò)誤了,但是沒(méi)有提及是哪里出現(xiàn)問(wèn)題
檢查錯(cuò)誤原因
@Test public void testSqlParser() throws Exception{ String sql = ""; CCJSqlParserUtil.parse(sql); }
通過(guò)CCJSqlParserUtil.parse可以拋出SQL的問(wèn)題所在,一般為關(guān)鍵字沖突、函數(shù)使用不匹配導(dǎo)致
例子
我這里的SQL為
sql: select a,b,IF(c=1 or d=2,0,1) as f from table;
這里是會(huì)提示SQL的IF關(guān)鍵字出現(xiàn)問(wèn)題,但是這個(gè)SQL是可以執(zhí)行成功,Ipage的排序解析認(rèn)為這個(gè)SQL是錯(cuò)誤的
而只有一個(gè)IF條件時(shí),解析是正確的,所以這里拋出問(wèn)題不一定是你的SQL問(wèn)題,而是這個(gè)分頁(yè)排序的問(wèn)題
sql: select a,b,IF(c=1,0,1) as f from table;
現(xiàn)在就是兩種解決辦法:
1.放棄Ipage的排序功能,將排序語(yǔ)句寫(xiě)在SQL中
2.修改IF,在判斷中只保留一個(gè)條件
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之生活旅行分享平臺(tái)的實(shí)現(xiàn)
這是一個(gè)使用了java+Springboot+JPA+Jsp+Html+js+Ajax+maven+mysql開(kāi)發(fā)的生活旅行分享平臺(tái),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有分享發(fā)布平臺(tái)該有的所有功能,感興趣的朋友快來(lái)看看吧2022-02-02通過(guò)實(shí)例了解java checked和unchecked異常
這篇文章主要介紹了通過(guò)實(shí)例了解checked和unchecked異常,Java異常分為兩種類型,checked異常和unchecked異常,另一種叫法是異常和錯(cuò)誤。下面小編就帶大家來(lái)一起學(xué)習(xí)一下吧2019-06-06java遍歷http請(qǐng)求request的所有參數(shù)實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇java遍歷http請(qǐng)求request的所有參數(shù)實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09使用Java反射機(jī)制提高SpringBoot的代碼質(zhì)量和可維護(hù)性
保持好的代碼質(zhì)量和遵守編碼標(biāo)準(zhǔn)是開(kāi)發(fā)可維護(hù)和健壯軟件的重要方面,在本文中,我們將探討如何使用 Java 反射來(lái)提高 Spring Boot 應(yīng)用程序的代碼質(zhì)量和可維護(hù)性,需要的朋友可以參考下2023-10-10如何在Java SpringBoot項(xiàng)目中配置動(dòng)態(tài)數(shù)據(jù)源你知道嗎
這篇文章主要介紹了SpringBoot如何在運(yùn)行時(shí)動(dòng)態(tài)添加數(shù)據(jù)源,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09springboot責(zé)任鏈模式實(shí)現(xiàn)多級(jí)校驗(yàn)
責(zé)任鏈模式是將鏈中的每一個(gè)節(jié)點(diǎn)看作是一個(gè)對(duì)象,每個(gè)節(jié)點(diǎn)處理的請(qǐng)求不同,且內(nèi)部自動(dòng)維護(hù)一個(gè)下一節(jié)點(diǎn)對(duì)象,下面我們來(lái)聊聊springboot如何利用責(zé)任鏈模式實(shí)現(xiàn)多級(jí)校驗(yàn)吧2024-11-11Maven dependencyManagement元素標(biāo)簽的具體使用
在Maven中dependencyManagement的作用其實(shí)相當(dāng)于一個(gè)對(duì)所依賴jar包進(jìn)行版本管理的管理器,本文主要介紹了Maven dependencyManagement元素標(biāo)簽的具體使用,感興趣的可以了解一下2024-03-03SpringBoot集成PostgreSQL并設(shè)置最大連接數(shù)
本文主要介紹了SpringBoot集成PostgreSQL并設(shè)置最大連接數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11Java生成遞增流水號(hào)(編號(hào)+時(shí)間+流水號(hào))簡(jiǎn)單示例
這篇文章主要給大家介紹了關(guān)于Java生成遞增流水號(hào)(編號(hào)+時(shí)間+流水號(hào))的相關(guān)資料,在開(kāi)發(fā)項(xiàng)目漫長(zhǎng)的過(guò)程中常常會(huì)遇到流水號(hào)需要自動(dòng)生成的問(wèn)題存在,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-07-07