解決mybatis中order by排序無效問題
1、#將傳入的數(shù)據(jù)都當(dāng)成一個(gè)字符串,會(huì)對自動(dòng)傳入的數(shù)據(jù)加一個(gè)雙引號(hào)。如:order by #{user_id},如果傳入的值是111,那么解析成sql時(shí)的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id"。
2、$將傳入的數(shù)據(jù)直接顯示生成在sql中。如:order by ${user_id},如果傳入的值是111,那么解析成sql時(shí)的值為order by 111, 如果傳入的值是id,則解析成的sql為order by id。
3、#方式能夠很大程度防止sql注入。
4、$方式無法防止Sql注入。
5、$方式一般用于傳入數(shù)據(jù)庫對象,例如傳入表名。
6、一般能用#的就別用$。
ps: 在使用mybatis中還遇到<![CDATA[]]>的用法,在該符號(hào)內(nèi)的語句,將不會(huì)被當(dāng)成字符串來處理,而是直接當(dāng)成sql語句,比如要執(zhí)行一個(gè)存儲(chǔ)過程。
所以order by 之后要使用$而非#。
補(bǔ)充知識(shí):MyBatis-plus數(shù)據(jù)庫字段排序不準(zhǔn)確
目錄標(biāo)題
1:今天用mybatis-plus進(jìn)行開發(fā)的時(shí)候遇到一個(gè)問題,就是用mysql自帶的排序進(jìn)行數(shù)據(jù)排序的時(shí)候,發(fā)現(xiàn)排序的數(shù)據(jù)不準(zhǔn)確。
1:今天用mybatis-plus進(jìn)行開發(fā)的時(shí)候遇到一個(gè)問題,就是用mysql自帶的排序進(jìn)行數(shù)據(jù)排序的時(shí)候,發(fā)現(xiàn)排序的數(shù)據(jù)不準(zhǔn)確。
例如:12還沒有8,4,2大,這就很郁悶了。

后來在網(wǎng)上查了一下,原來是自己給自己挖的坑,數(shù)據(jù)庫排序字段用的是varcher類型,而排序函數(shù)針對的是number類型。

解決方案:
對于mysql和oracle都實(shí)用
order by 字段+0
order by 字段*1


因?yàn)橛玫氖莔ybatis-plus,不想寫sql怎么辦呢?那就用自帶的排序函數(shù)嘍。排序字段直接"+1"就Ok了
//倒敘
queryWrapper.orderByDesc("visit_num+1");
以上這篇解決mybatis中order by排序無效問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot遷移到Micronaut實(shí)現(xiàn)過程詳解
這篇文章主要為大家?介紹了Springboot遷移到Micronaut實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
Java Validation Api如何實(shí)現(xiàn)自定義注解
這篇文章主要介紹了Java Validation Api如何實(shí)現(xiàn)自定義注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
大數(shù)據(jù) java hive udf函數(shù)的示例代碼(手機(jī)號(hào)碼脫敏)
這篇文章主要介紹了大數(shù)據(jù) java hive udf函數(shù)(手機(jī)號(hào)碼脫敏),的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
springboot整合 xxl-job的項(xiàng)目實(shí)踐
XL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái),用于解決分布式系統(tǒng)中的任務(wù)調(diào)度和管理問題,它包括調(diào)度中心、執(zhí)行器和Web管理控制臺(tái),本文就來介紹一下springboot整合 xxl-job的項(xiàng)目實(shí)踐,感興趣的可以了解一下2024-09-09
SpringBoot注解@ConditionalOnClass底層源碼實(shí)現(xiàn)
這篇文章主要為大家介紹了SpringBoot注解@ConditionalOnClass底層源碼實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
JAVA利用接口實(shí)現(xiàn)多繼承問題的代碼實(shí)操演示
Java語言并不支持多繼承,這是由于多繼承會(huì)帶來許多復(fù)雜的問題,例如"菱形問題"等,下面這篇文章主要給大家介紹了關(guān)于JAVA利用接口實(shí)現(xiàn)多繼承問題的相關(guān)資料,需要的朋友可以參考下2024-03-03

