今天再做mybatis项目的时候突然爆出了这个错误,在网络上查来查去大多说的都不是很正确,特此对此问题做个批注
关门放代码
<select id="findAllDept" parameterType="Long" resultMap="deptResultMap">
SELECT
DEP_ID,
DEP_NAME,
PARENT_ID,
DEP_DESP,
FROM NULLID.DEPARTMENT_B
<where>
<if test="pid != null">
DEP_ID=#{pid}
</if>
</where>
</select>
就是这样一段简单的代码报了上述的错误,网络上说的原因大多是因为传进来的参数是Long,所以在#{pid}中应将pid改为_parameter,即应该为#{_parameter},但是我在更改过后问题依然没有解决,后来我发现了<if test="pid !=null">这里的这个pid,按照常理来说 这个pid很可能被解析为对象的属性值,因为对字符串的解析更容易出错嘛,将其改为<if test="_parameter !=null">后问题果然迎刃而解,并且及时#{}中的值依然为pid,也没有再报错。
正确的方式为:
<select id="findAllDept" parameterType="Long" resultMap="deptResultMap">
SELECT
DEP_ID,
DEP_NAME,
PARENT_ID,
DEP_DESP,
FROM NULLID.DEPARTMENT_B
<where>
<if test="_parameter != null">
DEP_ID=#{pid}
</if>
</where>
</select>