电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

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

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

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

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

那Mybatis腳本怎么寫呢?

就這么寫👇🏻

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

OK,需求完成,測試,摸……

嗯,出bug了……

問題現(xiàn)場

定晴一看控制臺,報錯了。

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

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

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

問題分析

問題很簡單,隨手一查,原因是:

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

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

這種方式,order by 最后的sql會多加單引號 ’ 。

那怎么解決呢?

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

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

我不想用${}這種方式,因為有sql注入的風(fēng)險,那該怎么辦呢?

好吧,其實主要是這種方式也報錯了😓。

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

我們平時模糊查詢怎么寫呢?

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

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

那用一個什么函數(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 動態(tài)傳參出現(xiàn)的問題及解決方法

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

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

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 深圳VI设计-画册设计-LOGO设计-包装设计-品牌策划公司-[智睿画册设计公司] | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 杭州成人高考_浙江省成人高考网上报名| 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 沈飞防静电地板__机房地板-深圳市沈飞防静电设备有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 喷漆房_废气处理设备-湖北天地鑫环保设备有限公司 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 驾驶人在线_专业学车门户网站| 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 大_小鼠elisa试剂盒-植物_人Elisa试剂盒-PCR荧光定量试剂盒-上海一研生物科技有限公司 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 行星齿轮减速机,减速机厂家,山东减速机-淄博兴江机械制造 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 小型数控车床-数控车床厂家-双头数控车床 | 东莞海恒试验仪器设备有限公司 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 精密模具-双色注塑模具加工-深圳铭洋宇通 | 广东泵阀展|阀门展-广东国际泵管阀展览会 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 河南膏药贴牌-膏药代加工-膏药oem厂家-洛阳今世康医药科技有限公司 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 氧化铁红厂家-淄博宗昂化工| 威廉希尔WilliamHill·足球(中国)体育官方网站| 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 |