iBatis 動態SQL別名查詢結果為Null問題

2021-08-20 02:38:16 字數 1060 閱讀 7583

在專案中使用了ibatis,使用xml方便的維護sql,清晰明了,偶然發現動態拼接的sql語句在資料中執行很好的返回結果,而到了程式中總是有欄位返回null值,跟在資料庫中執行的結果不一致

id="getuser"

parameterclass="searchmodel"

resultclass="userto">

select id,name

property="birthday"

prepend=",">

time as birthday

isnotnull>

dynamic>

from user

select>

這個簡單查詢中,「birthday」這個欄位是在傳入引數birthday不為null的情況才會返回,有時候即使資料庫中time欄位有值也會返回null,這個是因為ibatis機制的問題,這是因為只定義了birthday欄位不為null時返回的別名(值),而另外的情況未為ibatis設定返回規則,預設的ibatis就會都返回null

ibatis中

這種動態判斷關鍵字最好是成對出現,將所有情況規則都寫出來,避免ibatis使用預設規則導致的動態sql別名字段返回為null問題

id="getuser"

parameterclass="searchmodel"

resultclass="userto">

select id,name

property="birthday"

prepend=",">

time as birthday

isnotnull>

property="birthday"

prepend=",">

null as birthday

isnull>

dynamic>

from user

select>

注意: ibatis中的動態拼接select 後面列時,會出現 「索引超出了陣列界限」的錯誤,需要將動態拼接的情況寫完整,類似上述情況

ibatis 動態查詢

最近專案需要,做了乙個動態查詢。把查詢結果返回到頁面上顯示。要查詢的字段和表名都是動態的,是在後台拼出來的。可是在ibatis中執行的時候總報 列名無效 在sql plus中執行則正常。百思不得其解。後來通過查資料,解決如下 select t.creator,t.create dt,decode o...

ibatis 動態查詢

在複雜查詢過程中,我們常常需要根據使用者的選擇決定查詢條件,這裡發生變化的 並不只是sql 中的引數,包括select 語句中所包括的字段和限定條件,都可能發生變 化。典型情況,如在乙個複雜的組合查詢頁面,我們必須根據使用者的選擇和輸入決定查 詢的條件組合。乙個典型的頁面如下 對於這個組合查詢頁面,...

動態sql語句 動態別名

動態sql語句我們經常會用的到,下面為您介紹的是使用動態sql語句自定義列名的實現方法,如果您之前遇到過類似的問題,不妨一看。create procedure poquery1 supplyid varchar 30 引數 as declare no nvarchar 100 declare seq...