今天做了一件坑了自己的事情,為此浪費了好多時間。。。 在mybatis的設置中,看到了這樣的一行設置。出於程式員的好奇,去搜索了一下,這條設置是乾什麼的。 <setting name="callSettersOnNulls" value="true"/> 在網上眾多大神的解答下,終於一知半解了。 在 ...
今天做了一件坑了自己的事情,為此浪費了好多時間。。。
在mybatis的設置中,看到了這樣的一行設置。出於程式員的好奇,去搜索了一下,這條設置是乾什麼的。
<setting name="callSettersOnNulls" value="true"/>
在網上眾多大神的解答下,終於一知半解了。
在一般查詢中,如果用map接受查詢結果時,會自動將查詢結果為null的欄位忽略,這樣就造成取參數時報空指針異常的情況。
如果設置了這條屬性之後,mybatis就不會忽略這些欄位,你依然能get到這些key,只不過value為null,這樣也方便。
那麼坑來了,這種設置的情況下,會出現2種比較特殊的情況。
1.如果整個查詢的所有欄位都沒有值,就是查詢到0條記錄時,那麼接受到的map是什麼結果?
答案是,我們會接收到一個所有key值都為null 的map 而不是一個為null的map。
2.如果只查詢一個欄位,而用map接收,此時為null是什麼結果?
答案是,我們會接收到一個為null的map,跟上面情況正好相反。