mybatis获取map值的问题
最近在使用xml编写sql的时候,对于请求变量多的时候 一个个的变量定义太多,于是使用map进行传参,但是在传参的时候总是会取不到值,
Parameter 'deviceTypeId' not found. Available parameters are [map, param1]
报错 。
再使用map传参时,总是报错参数找不到,后来经过测试发现再取值的时候如果是map或者对象传参需要使用map.xxx / obj.xxx的方式进行取值
对于开始取不到值,都是因为自己再取值时只是再#{} 里面使用了map进行了引用,而对于外部的条件判断时没用进行引用,因此报错
改错之后再if 里面进行了引用,成功的将map进行了取值。
使用obj对象进行传参,在xml里面也需要使用对象引用取值
SELECT
....
FROM
....
JOIN ....
ON ....
<where>
<if test="map.xx!=null and map.xx!= ''">
AND xx = #{map.xx,jdbcType=VARCHAR}
</if>
<if test="map.xx !=null and map.xx != ''">
AND xxx = #{map.xxx,jdbcType=VARCHAR}
</if>
</where>
# 如果是进行对象传参,使用对象引用的方式
<where>
<if test="obj.xx!=null and obj.xx!= ''">
AND xx = #{map.xx,jdbcType=VARCHAR}
</if>
<if test="obj.xx !=null and obj.xx != ''">
AND xxx = #{map.xxx,jdbcType=VARCHAR}
</if>
</where>