異常信息
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: The expression 'orderInfo.idList' evaluated to a null value.
報錯語句
<if test="orderInfo.queryFlag != null and orderInfo.queryFlag = 'settOrder'.toString() and orderInfo.idList != null"><foreach collection="orderInfo.idList" item="settId" open="and (" close=")" separator="or">b.sett_uuid =#{settId}</foreach>
</if>
異常分析
在MyBatis的XML映射文件中,=和==的使用是有區別的,=運算符主要用于SQL語句中的條件判斷,表示相等比較,例如:
WHERE column_name = #{param}
==運算符僅適用于MyBatis的動態SQL標簽(如、)中的OGNL表達式,用于比較Java對象的屬性或參數值。例如:
<if test="param == 'value'">...</if>
在動態SQL中誤用=代替==會導致解析失敗。
解決方案
將test條件判斷中的等號修改為兩個等號,如下:
orderInfo.queryFlag == 'settOrder'.toString()