异常信息
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()