問題:
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 將傳入的資料直接顯...