昨天在写一个接口 ,发现调mapper的方法时,传入参数为空。
sql语句为:
SELECT FORM_PAGE_URL
FROM WF_FLOW_NODE
WHERE NODE_NO = #{NODE_NO,jdbcType=INTEGER}
AND FLOW_ID = (SELECT ID FROM WF_FLOW_BASE WHERE FLOW_NO=#{FLOW_NO,jdbcType=VARCHAR})
AND FLOW_VERSION_ID = (SELECT ID FROM WF_FLOW_VERSION WHERE VERSION = #{FLOW_VERSION,jdbcType=VARCHAR} AND FLOW_ID = (SELECT ID FROM WF_FLOW_BASE WHERE FLOW_NO=#{FLOW_NO,jdbcType=VARCHAR}))
将sql打印出来:
所有的参数都是空。
打断点,看传入的参数:
发现参数都是有的,后来问同事,看了一会,把sql语句中参数的大写全都改成小写,问题解决。。。。
sql语句大小写是都可以,但是在mybatis中通过#{}获取参数,{}中的名称应该与传入参数的变量名保持一致,以保证能获取到正确的值。一开始认为sql不分大小写,就把所有内容都大写了。。。