Mybatis排序無效問題解決

2021-08-19 05:00:30 字數 873 閱讀 9485

問題:

mybatis在對映xml檔案中配置了排序項,但排序結果總是沒有變化。

分析:

經過查閱網上資料,才發現原來是變數定義轉義問題

(1)對於形如# 的變數,mybatis會將其視為字串值,在變數替換成功後,預設地給變數值加上引號。例如:

order by #

假設variable1傳入值為「name」,則最終sql語句等同為:

order by 「name」

而這個結果在日誌裡是發現不了的,該句子語法檢查亦能通過,可以執行。

(2)對於形如$的變數,mybatis會將其視作直接變數,即在變數替換成功後,不會再給其加上引號。例如:

order by $

假設variable1傳入值為「name」,則最終sql語句等同為:

order by name

為想要的正確結果。

解決:

所以,對於order by變數的傳入,應使用形式

,同理,

排序順序

asc/

desc

的變數傳

入,也應

使用形 式,

同理,排

序順序a

sc/d

esc的

變數傳入

,也應使

用{}形式,否則,在使用oracle資料庫時:

(1)order by # #

會出現「ora-01745: 無效的主機/繫結變數名「

(2)order by $ #

」ora-00907: 缺失右括號「異常。

(3)order by so

rtfi

eld sor

tfie

ld

結果正確。

spring事務配置無效問題解決

專案使用spring springmvc mybatis,配置完之後發現事務沒起作用,搗鼓了幾乎乙個白天。最後的解決方案是,springmvc和spring是兩個配置檔案,修改spring mvc.xml的掃瞄路徑,把service排除,順便把spring.xml的掃瞄路徑裡control排除。因為...

mybatis字串轉義問題解決

提前劇透 如果引數中有.等特殊引數,需要使用 但需要注意sql注入問題 select select from account order by limit public listgetaccountlist param orderby string orderby,param orderrule s...

mybatis動態sql排序無效問題

在使用mybatis解析xml進行排序的時候,遇見排序無效的問題!將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 將傳入的資料直接顯...