mybatis报错:There is no getter for property named 'logId' in 'class java.lang.String'
在使用mybatis的时候,运行的时候出现:There is no getter for property named ‘logId’ in ‘class java.lang.String’的错误。
1.错误的写法:
<select id="queryByUUID" resultType="com.risenb.manage.bean.SysLog" parameterType="java.lang.String">
select
<include refid="sl_Base_Column_List" />
from
sys_log
<where>
<if test="logId != null and logId != '' ">
and
log_id = #{logId}
</if>
</where>
</select>
2.正确的写法:
解决方法一:
<select id="queryByUUID" resultType="com.risenb.manage.bean.SysLog" parameterType="java.lang.String">
select
<include refid="sl_Base_Column_List" />
from
sys_log
<where>
<if test="_parameter!= null and _parameter!= '' ">
and
log_id = #{logId} 或者#{_parameter}
</if>
</where>
</select>
解决方法二:是在mapper(DAO)的方法中添加注解@Param
SysLog queryByUUID(@Param("logId")String uuid);
3.分析:
Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取 string.xxx 值,如果没在在方法中定义,则会抛异常报错。也有人分析是if或when标签是针对JAVABEAN或者MAP的,String不能用标签,因此建议去掉if或when标签。某些版本会有这方面的问题。
还没有评论,来说两句吧...