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

MyBatis模糊查詢報錯:ParserException: not supported.pos 問題解決

 更新時間:2025年04月29日 11:38:30   作者:很少更新  
本文主要介紹了MyBatis模糊查詢報錯:ParserException: not supported.pos 問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

問題描述

在使用MyBatis執(zhí)行如下SQL時出現(xiàn)Druid解析異常:

 <select id="selectListMzHairVoById" resultMap="MzPinHairMap">
  select ... where pin_no like "%"#{id}"%"
  </select>

報錯信息:

log merge sql error, dbType mysql, druid-1.2.9, sql : ... like '%'?'%' com.alibaba.druid.sql.parser.ParserException: not supported.pos 155...

問題根源

錯誤SQL解析邏輯

MyBatis會將 "%\"#{id}\"%" 解析為:

sql WHERE pin_no LIKE '%'?'%'

導(dǎo)致參數(shù)占位符被單引號包裹,MySQL無法識別這種語法結(jié)構(gòu)

深層原因分析

  • 字符串拼接問題:直接使用"%"#{id}"%"會導(dǎo)致預(yù)編譯參數(shù)位置錯誤
  • SQL注入風(fēng)險:雖然使用#{}是安全的,但錯誤的語法結(jié)構(gòu)可能繞過預(yù)編譯機制
  • Druid嚴(yán)格校驗:阿里Druid連接池對SQL語法有嚴(yán)格校驗(比MySQL原生更嚴(yán)格)

三種解決方案

方案一:使用CONCAT函數(shù)(推薦)

<select id="selectListMzHairVoById" resultMap="MzPinHairMap"> 
SELECT ... 
WHERE pin_no LIKE CONCAT('%', #{id}, '%') 
</select>

優(yōu)勢

  • 符合SQL標(biāo)準(zhǔn)語法
  • 100%預(yù)編譯安全
  • 兼容所有數(shù)據(jù)庫連接池

方案二:bind標(biāo)簽綁定參數(shù)

<select id="selectListMzHairVoById" resultMap="MzPinHairMap"> 
<bind name="pattern" value="'%' + id + '%'"/> 
SELECT ... WHERE pin_no LIKE #{pattern} 
</select>

適用場景:需要動態(tài)構(gòu)造復(fù)雜匹配模式時使用

方案三:Java端預(yù)拼接參數(shù)

Service層:

public List<MzPinHairVo> query(String id) { 
String searchParam = "%" + id + "%"; 
return mapper.selectListMzHairVoById(searchParam);
 }

Mapper.xml:

<select id="selectListMzHairVoById" resultMap="MzPinHairMap">
 SELECT ... 
 WHERE pin_no LIKE #{id}
  </select>

注意事項:需確保參數(shù)來源可信,防止SQL注入

方案對比

方案安全性可維護(hù)性性能跨數(shù)據(jù)庫兼容性
CONCAT★★★★★★★★★★★★
bind標(biāo)簽★★★★★☆★★☆★★★
Java拼接★★☆★☆☆★★★★★★

到此這篇關(guān)于MyBatis模糊查詢報錯:ParserException: not supported.pos 問題解決的文章就介紹到這了,更多相關(guān)MyBatis模糊查詢報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Spring將MultipartFile轉(zhuǎn)存到本地磁盤的三種方式

    Spring將MultipartFile轉(zhuǎn)存到本地磁盤的三種方式

    在Java中處理文件向來是一種不是很方便的操作,然后隨著Spring框架的崛起,使用Spring框架中的MultipartFile來處理文件也是件很方便的事了,今天就給大家介紹Spring將MultipartFile轉(zhuǎn)存到本地磁盤的方式,需要的朋友可以參考下
    2024-10-10
  • spring?cloud?eureka注冊原理-注冊失敗填坑筆記

    spring?cloud?eureka注冊原理-注冊失敗填坑筆記

    這篇文章主要介紹了spring?cloud?eureka注冊原理-注冊失敗填坑筆記,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • SpringBoot導(dǎo)出Excel的四種實現(xiàn)方式

    SpringBoot導(dǎo)出Excel的四種實現(xiàn)方式

    近期接到了一個小需求,要將系統(tǒng)中的數(shù)據(jù)導(dǎo)出為Excel,且能將Excel數(shù)據(jù)導(dǎo)入到系統(tǒng),對于大多數(shù)研發(fā)人員來說,這算是一個最基本的操作了,本文就給大家總結(jié)一下SpringBoot導(dǎo)出Excel的四種實現(xiàn)方式,需要的朋友可以參考下
    2024-01-01
  • Spring依賴注入的三種方式小結(jié)

    Spring依賴注入的三種方式小結(jié)

    本篇文章主要介紹了Spring依賴注入的三種方式小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • java如何將實體類轉(zhuǎn)換成json并在控制臺輸出

    java如何將實體類轉(zhuǎn)換成json并在控制臺輸出

    這篇文章主要介紹了java如何將實體類轉(zhuǎn)換成json并在控制臺輸出問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Spring集成Swagger常見錯誤及解決辦法

    Spring集成Swagger常見錯誤及解決辦法

    這篇文章主要介紹了Spring集成Swagger常見錯誤及解決辦法,幫助大家更好的理解和學(xué)習(xí)使用Spring,感興趣的朋友可以了解下
    2021-05-05
  • 關(guān)于@ComponentScan?TypeFilter自定義指定掃描bean的規(guī)則

    關(guān)于@ComponentScan?TypeFilter自定義指定掃描bean的規(guī)則

    這篇文章主要介紹了關(guān)于@ComponentScan?TypeFilter自定義指定掃描bean的規(guī)則,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java實現(xiàn)單例模式的五種方法介紹

    Java實現(xiàn)單例模式的五種方法介紹

    單例模式確保某個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。在計算機系統(tǒng)中,線程池、緩存、日志對象、對話框、打印機、顯卡的驅(qū)動程序?qū)ο蟪1辉O(shè)計成單例
    2023-01-01
  • Java通俗易懂系列設(shè)計模式之建造者模式

    Java通俗易懂系列設(shè)計模式之建造者模式

    這篇文章主要介紹了Java通俗易懂系列設(shè)計模式之建造者模式,對設(shè)計模式感興趣的讀者,一定要看一下
    2021-04-04
  • IDEA創(chuàng)建Java?Web項目的超詳細(xì)圖文教學(xué)

    IDEA創(chuàng)建Java?Web項目的超詳細(xì)圖文教學(xué)

    IDEA是程序員們常用的java集成開發(fā)環(huán)境,也是被公認(rèn)為最好用的java開發(fā)工具,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Java?Web項目的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評論