mybatis报错:There is no getter for property named 'logId' in 'class java.lang.String'

朴灿烈づ我的快乐病毒、 2022-06-06 02:26 278阅读 0赞

在使用mybatis的时候,运行的时候出现:There is no getter for property named ‘logId’ in ‘class java.lang.String’的错误。

Center

1.错误的写法:

  1. <select id="queryByUUID" resultType="com.risenb.manage.bean.SysLog" parameterType="java.lang.String">
  2. select
  3. <include refid="sl_Base_Column_List" />
  4. from
  5. sys_log
  6. <where>
  7. <if test="logId != null and logId != '' ">
  8. and
  9. log_id = #{logId}
  10. </if>
  11. </where>
  12. </select>

2.正确的写法:

解决方法一:

  1. <select id="queryByUUID" resultType="com.risenb.manage.bean.SysLog" parameterType="java.lang.String">
  2. select
  3. <include refid="sl_Base_Column_List" />
  4. from
  5. sys_log
  6. <where>
  7. <if test="_parameter!= null and _parameter!= '' ">
  8. and
  9. log_id = #{logId} 或者#{_parameter}
  10. </if>
  11. </where>
  12. </select>

解决方法二:是在mapper(DAO)的方法中添加注解@Param

  1. SysLog queryByUUID(@Param("logId")String uuid);

3.分析:

Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取 string.xxx 值,如果没在在方法中定义,则会抛异常报错。也有人分析是if或when标签是针对JAVABEAN或者MAP的,String不能用标签,因此建议去掉if或when标签。某些版本会有这方面的问题。

发表评论

表情:
评论列表 (有 0 条评论,278人围观)

还没有评论,来说两句吧...

相关阅读