mybatis3.4.x版本报错:There is no getter for property named ‘username‘ in ‘class java.lang.String‘

在Mybatis3.4.5版本中,如果只有一个参数如$username$,在动态SQL中使用时需要添加@Param注解。但在3.5.x及以上版本,单个参数可免于@Param。文章中展示了如何在接口和XML配置中正确使用,并给出了由于缺少@Param导致的getter异常的示例。在3.5.x版本中,这个bug已被修复。
摘要由CSDN通过智能技术生成

mybatis3.4.5版本导包

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>

低版本3.4.x,并且只有一个参数username,要在动态sql中使用,必须要加上@Param
3.5.x以上版本,如果只有一个参数,可以不加@Param

接口:

User findByUsername(@Param("username") String username);

对应动态sql语句

    <select id="findByUsername" parameterType="string" resultType="user">
        SELECT * FROM user
        <where>
            <if test="username!=null and username!=''">
                WHERE username = #{username}
            </if>
        </where>
    </select>

测试

UserMapper userMapper = null;

@Test
public void findByUsername() {
    User user = userMapper.findByUsername("张三");
    System.out.println(user);
}

3.4.5版本报bug

org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'username' in 'class java.lang.String'
### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'username' in 'class java.lang.String'

大概意思是getter方法对username不可用
3.5.x版本修复了这个问题

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖成范德彪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值