这样引用时错误的
<select id="findById" parameterType="java.lang.String" resultMap="sysParameterMap" >
select * from sys_parameter
<where>
<if test="id !=null">
and PARAMETER_ID = #{id}
</if>
</where>
if 标签中不能使用传入参数的名字,因为会解析成对象的属性。也就会报下面异常
: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.String'
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:371)
at com.sun.proxy.$Proxy10.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:163)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43)
at com.sun.proxy.$Proxy13.findById(Unknown Source)
把
<if test="id !=null">
中的id 换成value 即可解决
<select id="findById" parameterType="java.lang.String" resultMap="sysParameterMap" >
select * from sys_parameter
<where>
<if test="value !=null">
and PARAMETER_ID = #{id}
</if>
</where>
</select>
value 会mybatis 默认访问值的参数