错误代码:
<select id="findUserAndOrdersList" parameterType="int" resultMap="userAndOrders">
select <include refid="selectClumn"/>
from user left join orders on user.id=orders.user_id
<where>
<if test="id !=null and id >0">
and user.id = #{id}
</if>
</where>
</select>
错误信息:
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.Integer'
### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.Integer'
解决方案:
修改 id 为_parameter
<where>
<if test="_parameter !=null and _parameter >0">
and user.id = #{_parameter}
</if>
</where>
错误原因:
在网上搜索答案,都说将自定义变量改为_parameter
即可。按所说改后,发现果然ok了,至此分析,感觉应该是 id="id !=null"
中当为非键值对的变量时,无法获得对应变量的get,而_parameter
是mybatis中默认的存放参数变量的
参考链接:https://cloud.tencent.com/developer/article/1344713