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

Java中報(bào)錯(cuò)org.springframework.jdbc.UncategorizedSQLException的多種解決方法

 更新時(shí)間:2023年06月21日 15:13:54   作者:互聯(lián)網(wǎng)全棧開(kāi)發(fā)實(shí)戰(zhàn)  
本文主要介紹了Java中報(bào)錯(cuò)org.springframework.jdbc.UncategorizedSQLException的多種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

如果你遇到的問(wèn)題不是我所遇到的問(wèn)題,可以使用最下面的方法解決你遇到的這個(gè)錯(cuò)誤。

1. 引出問(wèn)題

今天在寫“Mybatis-Plus 中分頁(yè)插件PaginationInterceptor, MybatisPlusInterceptor 在SpringBoot中的使用”的博文時(shí),遇到了如下問(wèn)題:

JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@498d7c57] will not be managed by Spring
==>  Preparing: SELECT COUNT(*) AS total FROM user
==> Parameters: 
<==    Columns: total
<==        Row: 24
<==      Total: 1
==>  Preparing: select username,nickname,user_type as userType from user order by create_time desc; LIMIT ?,?
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6f5c4fa1]
org.springframework.jdbc.UncategorizedSQLException: 
### Error querying database.  Cause: java.sql.SQLException: sql injection violation, dbType mysql, , druid-version 1.2.11, syntax error: not supported.pos 89, line 1, column 85, token LIMIT : select username,nickname,user_type as userType from user order by create_time desc; LIMIT ?,?
### The error may exist in com/cloud/lowcode/mapper/UserMapper.java (best guess)
### The error may involve com.cloud.lowcode.mapper.UserMapper.findPageUsers
### The error occurred while executing a query
### SQL: select username,nickname,user_type as userType from user order by create_time desc; LIMIT ?,?
### Cause: java.sql.SQLException: sql injection violation, dbType mysql, , druid-version 1.2.11, syntax error: not supported.pos 89, line 1, column 85, token LIMIT : select username,nickname,user_type as userType from user order by create_time desc; LIMIT ?,?
; uncategorized SQLException; SQL state [null]; error code [0]; sql injection violation, dbType mysql, , druid-version 1.2.11, syntax error: not supported.pos 89, line 1, column 85, token LIMIT : select username,nickname,user_type as userType from user order by create_time desc; LIMIT ?,?; nested exception is java.sql.SQLException: sql injection violation, dbType mysql, , druid-version 1.2.11, syntax error: not supported.pos 89, line 1, column 85, token LIMIT : select username,nickname,user_type as userType from user order by create_time desc; LIMIT ?,?
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
	at com.sun.proxy.$Proxy157.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166)
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
	at com.sun.proxy.$Proxy161.findPageUsers(Unknown Source)
	at com.cloud.lowcode.service.UserService.findPageUsers(UserService.java:52)
	at com.cloud.lowcode.service.UserService$$FastClassBySpringCGLIB$$dd31034.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
	at com.cloud.lowcode.service.UserService$$EnhancerBySpringCGLIB$$c454c3ba.findPageUsers(<generated>)
	at com.cloud.lowcode.controller.UserController.findPageUsers(UserController.java:71)
	at com.cloud.lowcode.controller.UserController$$FastClassBySpringCGLIB$$6a5c21dc.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
	at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)
	at com.cloud.lowcode.controller.UserController$$EnhancerBySpringCGLIB$$bf8624f6.findPageUsers(<generated>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	......

2. 分析問(wèn)題

通過(guò)報(bào)錯(cuò)信息sql injection violation可知SQL注入沖突,是哪里發(fā)生了沖突呢?別著急,繼續(xù)往下分析報(bào)錯(cuò)的SQL語(yǔ)句:

select username,nickname,user_type as userType from user order by create_time desc; LIMIT ?,?

原來(lái)SQL語(yǔ)句出現(xiàn)了錯(cuò)誤,即在create_time descLIMIT ?,?出現(xiàn)了;。

正因?yàn)檫@個(gè)分號(hào)導(dǎo)致SQL執(zhí)行異常,然而,我的原SQL語(yǔ)句并沒(méi)寫LIMIT ?,?,如下代碼所示:

@Select("select " +
            "username,nickname,user_type as userType " +
          "from " +
            "user " +
          "order by " +
            "create_time desc;"
  )

可以清晰地看到,我的SQL語(yǔ)句加上了分號(hào)(;),但沒(méi)有LIMIT ?,?。

通過(guò)查找資料可得:在使用PaginationInterceptor, MybatisPlusInterceptor插件做分頁(yè)操作時(shí),編寫mapper.xml中的SQL語(yǔ)句時(shí),或者使用@select注解編寫SQL語(yǔ)句時(shí),語(yǔ)句末尾若使用 ; 結(jié)尾,則會(huì)導(dǎo)致出現(xiàn)SQL語(yǔ)法錯(cuò)誤(SQLSyntaxErrorException),原因是在做分頁(yè)的時(shí)候會(huì)在編寫的SQL語(yǔ)句后面拼接上limit語(yǔ)句。

3. 解決問(wèn)題

既然語(yǔ)句末尾不能加;,則去掉分號(hào);即可,如下代碼所示:

@Select("select " +
            "username,nickname,user_type as userType " +
          "from " +
            "user " +
          "order by " +
            "create_time desc"
  )
  List<UserPageVo> findPageUsers(Page<UserPageVo> page);

重新運(yùn)行項(xiàng)目即可執(zhí)行成功,如下圖所示:

4. 解決該問(wèn)題的其他方法

如果你遇到的問(wèn)題不是我所遇到的問(wèn)題,可以使用如下方法解決你遇到的這個(gè)錯(cuò)誤。

4.1 方法1

檢查字段類型是否對(duì)得上。因?yàn)樽侄晤愋蛯?duì)應(yīng)不上,在數(shù)據(jù)庫(kù)的類型和實(shí)體中的類型不一致。

比如user_id在數(shù)據(jù)庫(kù)中是varchar類型,但在實(shí)體中是Integer。

4.2 方法2

檢查字段名稱是否對(duì)得上,有可能在java實(shí)體中的注解名稱在數(shù)據(jù)庫(kù)中不存在。

比如數(shù)據(jù)庫(kù)中的字段是user_type,而注解中的字段是userType,如下代碼所示:

@TableField(value = "userType")
private String userType;

當(dāng)然,如果java實(shí)體中不指定數(shù)據(jù)庫(kù)的字段名稱,則默認(rèn)以屬性名稱對(duì)應(yīng)數(shù)據(jù)庫(kù)的字段名稱,往往這種會(huì)出現(xiàn)這個(gè)錯(cuò)誤(UncategorizedSQLException)。

4.3 方法3

檢查數(shù)據(jù)庫(kù)的表字段是否有限制。

例如是UNI(唯一)、非空等限制都會(huì)導(dǎo)致出現(xiàn)此問(wèn)題。

4.4 方法4

檢查表字符集是否有問(wèn)題。

例如表字符集是utf8,但提交的內(nèi)容有表情,改成utf8mb4即可。

備注:如果上述方法都無(wú)法解決你的問(wèn)題,歡迎在評(píng)論區(qū)留言。

到此這篇關(guān)于Java中報(bào)錯(cuò)org.springframework.jdbc.UncategorizedSQLException的多種解決方法的文章就介紹到這了,更多相關(guān)org.springframework.jdbc.UncategorizedSQLException內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中字符串常見(jiàn)的拼接方式小結(jié)

    Java中字符串常見(jiàn)的拼接方式小結(jié)

    在Java中,字符串拼接是開(kāi)發(fā)過(guò)程中非常常見(jiàn)的操作,根據(jù)不同的需求和性能考慮,有多種方式可以實(shí)現(xiàn)字符串的拼接,本文給大家介紹了五種拼接方式,并通過(guò)代碼講解的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Java通過(guò)JavaMail發(fā)送郵件功能

    Java通過(guò)JavaMail發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了Java通過(guò)JavaMail發(fā)送郵件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 詳解SpringMVC中的四種跳轉(zhuǎn)方式、視圖解析器問(wèn)題

    詳解SpringMVC中的四種跳轉(zhuǎn)方式、視圖解析器問(wèn)題

    這篇文章主要介紹了SpringMVC的四種跳轉(zhuǎn)方式、視圖解析器,springmvc核心配置文件和視圖解析器的使用,添加視圖解析器,通過(guò)案例講解四種跳轉(zhuǎn)方式,需要的朋友可以參考下
    2022-10-10
  • Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解

    Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解

    這篇文章主要為大家介紹了Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • java隊(duì)列之queue用法實(shí)例分析

    java隊(duì)列之queue用法實(shí)例分析

    這篇文章主要介紹了java隊(duì)列之queue用法實(shí)例分析,Queue 隊(duì)列就是一個(gè)先入先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),Queue接口繼承Collection接口。感興趣的可以了解一下
    2020-07-07
  • Java使用注解實(shí)現(xiàn)防止重復(fù)提交實(shí)例

    Java使用注解實(shí)現(xiàn)防止重復(fù)提交實(shí)例

    這篇文章主要介紹了Java使用注解實(shí)現(xiàn)防止重復(fù)提交實(shí)例,在一些項(xiàng)目中由于用戶誤操作,多次點(diǎn)擊表單提交按鈕,會(huì)產(chǎn)生很多次的數(shù)據(jù)交互,為了解決這一問(wèn)題,本文使用注解來(lái)實(shí)現(xiàn)防止重復(fù)提交,需要的朋友可以參考下
    2023-07-07
  • IDEA配置Tomcat后,控制臺(tái)tomcat?catalina?log出現(xiàn)亂碼問(wèn)題

    IDEA配置Tomcat后,控制臺(tái)tomcat?catalina?log出現(xiàn)亂碼問(wèn)題

    本文介紹了如何通過(guò)設(shè)置Tomcat和IDEA的編碼格式來(lái)解決編碼問(wèn)題,首先嘗試修改Tomcat的logging.properties文件中的編碼設(shè)置,如果未解決問(wèn)題,則調(diào)整IDEA的編碼設(shè)置,通過(guò)修改vmoptions文件來(lái)全局設(shè)置IDEA的編碼格式,作者分享了個(gè)人成功解決問(wèn)題的方法和步驟,供其他開(kāi)發(fā)者參考
    2024-09-09
  • MyBatis中SQL片段復(fù)用使用方法詳解

    MyBatis中SQL片段復(fù)用使用方法詳解

    在使用 MyBatis 進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),常常會(huì)遇到一些 SQL 語(yǔ)句的部分內(nèi)容重復(fù)出現(xiàn)的情況,比如多個(gè)查詢語(yǔ)句都涉及相同的字段列表,這時(shí),MyBatis 的 SQL 片段復(fù)用功能就派上用場(chǎng)了,接下小編給大家介紹了MyBatis中SQL片段復(fù)用使用方法,需要的朋友可以參考下
    2024-12-12
  • Java中使用HttpPost發(fā)送form格式的請(qǐng)求實(shí)現(xiàn)代碼

    Java中使用HttpPost發(fā)送form格式的請(qǐng)求實(shí)現(xiàn)代碼

    在Java中使用HttpPost發(fā)送form格式的請(qǐng)求,可以使用Apache HttpClient庫(kù)來(lái)實(shí)現(xiàn),這篇文章主要介紹了Java中使用HttpPost發(fā)送form格式的請(qǐng)求,本文給大家展示示例代碼,需要的朋友可以參考下
    2023-08-08
  • Java 讀取文本指定的某一行內(nèi)容的方法

    Java 讀取文本指定的某一行內(nèi)容的方法

    今天小編就為大家分享一篇Java 讀取文本指定的某一行內(nèi)容的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論

北川| 巩义市| 苍南县| 海阳市| 四会市| 合肥市| 卢湾区| 金坛市| 北川| 柳州市| 邳州市| 阿克陶县| 曲麻莱县| 仁寿县| 湛江市| 莲花县| 焉耆| 澄迈县| 三河市| 淮南市| 海南省| 司法| 南丹县| 澄城县| 白玉县| 柳林县| 北海市| 孝义市| 三河市| 广灵县| 乌鲁木齐市| 黄浦区| 泾川县| 酉阳| 河北省| 万安县| 漳平市| 克东县| 苗栗县| 巴马| 临洮县|