今天在寫項目的時候,碰到了這個問題,調試了半天都沒搞定。最後把問題鎖定到xml配置文件上:
一般配置文件都這麼寫
<select ...>
select * from table where XXX = #valule# order by #value#
</select>
但是由於ibatis在將參數值映射到statement裏面時,所以對於 #value# 會解釋成 字符串 'value' ,於是我的代碼就被解釋成
select * from table where XXX = 'valule' order by 'value'
這樣顯然不對,所以得換個方法
<select ...>select * from table where XXX = #valule# order by $value$</select>
用$$來包含order by的參數,就OK了~因爲$$內的value不會被解釋成'value',而是直接原樣翻譯。
總結:如果要考慮數據類型,用#;若是隻考慮字符,則用$.