午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

Mybatis order by 動(dòng)態(tài)傳參出現(xiàn)的問題及解決方法

瀏覽:43日期:2023-10-18 14:04:54
問題由來

一個(gè)簡(jiǎn)單的需求,要求把和當(dāng)前用戶相關(guān)的數(shù)據(jù)置頂展示。

這里,我用了一個(gè)簡(jiǎn)單的用戶表來復(fù)現(xiàn)這個(gè)需求。

Mybatis order by 動(dòng)態(tài)傳參出現(xiàn)的問題及解決方法

很簡(jiǎn)單,查詢語句后面加上:order by t.login_name=’wulaoer’ desc 就行了。

如下所示,吳老二就到頂了。

Mybatis order by 動(dòng)態(tài)傳參出現(xiàn)的問題及解決方法

那Mybatis腳本怎么寫呢?

就這么寫👇🏻

<select resultType='cn.fighter3.entity.User'>select * from user torder by t.login_name=#{req.currentUser} desc </select>

OK,需求完成,測(cè)試,摸……

嗯,出bug了……

問題現(xiàn)場(chǎng)

定晴一看控制臺(tái),報(bào)錯(cuò)了。

Mybatis order by 動(dòng)態(tài)傳參出現(xiàn)的問題及解決方法

最關(guān)鍵的一行:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

問題分析

問題很簡(jiǎn)單,隨手一查,原因是:

#{}傳過來的參數(shù)帶單引號(hào)

#{}采用預(yù)編譯機(jī)制,是占位符,#{}傳入?yún)?shù)是以字符串傳入,會(huì)將SQL中的#{}替換為?號(hào),調(diào)用PreparedStatement的set方法來賦值。

這種方式,order by 最后的sql會(huì)多加單引號(hào) ’ 。

那怎么解決呢?

可以用 ${}。${}是拼接符,直接字符串替換。

<select resultType='cn.fighter3.entity.User'>select * from user torder by t.login_name=${req.currentUser} desc </select>

我不想用${}這種方式,因?yàn)橛衧ql注入的風(fēng)險(xiǎn),那該怎么辦呢?

好吧,其實(shí)主要是這種方式也報(bào)錯(cuò)了😓。

java.sql.SQLSyntaxErrorException: Unknown column ’wulaoer’ in ’order clause’

我們平時(shí)模糊查詢?cè)趺磳懩兀?/p>

——使用CONCAT()函數(shù)來拼接keyword。

以此類推,那我用一個(gè)函數(shù)來去掉’不就行了。

那用一個(gè)什么函數(shù)呢?

——REPLACE

所以寫法就變成了這樣:

<select resultType='cn.fighter3.entity.User'>select * from user torder by t.login_name=REPLACE(#{req.currentUser},’’’,’’) desc </select>問題解決

OK,最終問題解決。

<select resultType='cn.fighter3.entity.User'>select * from user torder by t.login_name=REPLACE(#{req.currentUser},’’’,’’) desc </select>

上去吧,吳老二!

Mybatis order by 動(dòng)態(tài)傳參出現(xiàn)的問題及解決方法

問題比較簡(jiǎn)單,處理起來也是三下五除二,但是分析的過程還有點(diǎn)意思,所以發(fā)出來給大家瞧瞧。

到此這篇關(guān)于Mybatis order by 動(dòng)態(tài)傳參出現(xiàn)的一個(gè)小bug的文章就介紹到這了,更多相關(guān)Mybatis order by 動(dòng)態(tài)傳參出現(xiàn)的一個(gè)小bug內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 亚洲wwwww| 手机看片日韩欧美 | 中文字幕日韩专区 | 国产黄色网址在线观看 | 亚洲自拍偷拍在线 | 国产精品传媒在线观看 | 亚洲精品男人天堂 | 丝袜美腿在线 | 日韩精品久久久 | 黄色国产视频 | av男人的天堂在线 | 亚洲精品一线 | 亚洲综合色网 | 伊人亚洲精品 | 美女黄色大片 | 日韩黄色免费 | 久久久久99精品成人片三人毛片 | 日韩在线观看免费网站 | 天天干天天操天天操 | 亚洲婷婷免费 | 日韩av三区 | 性天堂av | 成年免费视频黄网站在线观看 | 日本中文字幕在线视频 | 国产在线观看网站 | 日日操天天操 | 黄色免费看网站 | 成人黄网免费观看视频 | 亚洲高清视频在线 | 在线视频福利 | 日韩av中字| 成人a级片 | 色大师av | 久艹视频在线 | 欧美第一页在线 | 午夜精品av | 成人一区二区三区视频 | 一区二区三区视频网站 | 国产91精品在线观看 | 二区视频在线 | 国产免费成人av |