解决MyBatis的报错 There is no getter for property named ‘*‘ in ‘class java.lang.String‘

本文介绍了解决MyBatis在使用字符串参数时出现的Thereisnogetterforpropertynamed'xxx'in'classjava.lang.String'错误的方法。通过两种SQL写法避免错误发生,并给出具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ERROR信息:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'xxx' in 'class java.lang.String'

遇到此问题时,首先网上查询得到以下两篇文章,找到了解决办法:

解决MyBatis的报错 There is no getter for property named ‘*‘ in ‘class java.lang.String‘_吾欲乘风归去,又恐琼楼玉宇的博客-优快云博客报错样式:核心问题就是这一句:https://blog.youkuaiyun.com/NeiHan2020/article/details/117556666源码分析 There is no getter for property named '*' in 'class java.lang.String_沉默王二的博客-优快云博客There is no getter for property named '*' in 'class java.lang.String',此错误之所以出现,是因为mybatis在对parameterType="String"的sql语句做了限制,假如你使用这样的条件判断时,就会出现该错误,不过今天我们来刨根问底一下。https://blog.youkuaiyun.com/qing_gee/article/details/47122227经过自己动手尝试,下面两种写法不会出错:

1.没有判断是否为空的语句:

<select id="getListByName" resultMap="BaseResultMap">
        SELECT <include refid="Base_Column_List" />
        FROM myTable
        WHERE name= #{name}
</select>


<select id="getListByName" resultMap="BaseResultMap" parameterType="String">
        SELECT <include refid="Base_Column_List" />
        FROM myTable
        WHERE name= #{name}
</select>

2.有判断是否为空的语句:

<select id="getListByName" resultMap="BaseResultMap">
        SELECT <include refid="Base_Column_List" />
        FROM myTable
        <where>
            <if test="null != _parameter and '' != _parameter">
                name= #{name}
            </if>
        </where>
</select>



<select id="getListByName" resultMap="BaseResultMap" parameterType="String">
        SELECT <include refid="Base_Column_List" />
        FROM myTable
        <where>
            <if test="null != _parameter and '' != _parameter">
                name= #{name}
            </if>
        </where>
</select>

得出结论:

当查询SQL的传入参数为字符串String类型时,如果写了空值判断条件,需要在if判断条件里用_parameter替换参数名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值