您的位置:首页 > 编程语言 > Java开发

There is no getter for property named in 'class java.lang.String'

2015-07-29 09:29 513 查看
前言:很不幸,也遇到了“There is no getter for property named in ‘class java.lang.String’”错误,度娘了一下,找到了很多篇一致的文章,但其说法有待商榷,不过也给了我一些借鉴意义。

别人种树

看看There is no getter for property named ‘**’ in ‘class java.lang.String这篇文章,里面说

发现不能将参数设为bean里的名称,如果传入类型为String类型,则参数需统一修改为[_parameter],修改后的sql语句如下(不管你的参数是什么,都要改成”_parameter”)

其实不然,不是说

<select id="getRiskMember" resultMap="BaseResultMap" parameterType="String">


这样的语句,在xml中参数都必须是“_parameter”。

我来乘凉

来看看我的论证

<select id="getMoneyTransferByAttr1" parameterType="String" resultMap="BaseResultMap">
        <include refid="selectMoneyTransfer" />
        and attr1 = #{attr1}
    </select>


这样的写法,在运行时也完全没有问题,注意parameterType=”String”、and attr1 = #{attr1}。

那么什么情况下会发生“There is no getter for property named in ‘class java.lang.String’”错误呢?

其实是在这种情况下:

<select id="getRiskMember" resultMap="BaseResultMap" parameterType="String">
        <include refid="selectMember"/>
        and safetylevel > 1
        and stauts = 1

        <if test="username != null">
            and username = #{username} 
        </if>
    </select>


注意看,是在if test=验证的时候发生的 “There is no getter for property named in ‘class java.lang.String’”,而并非是and username = #{username} 的时候发生的错误。

当然解决办法还是“noku_ln10”博主说的,改成一下这种情况就OK了

<select id="getRiskMember" resultMap="BaseResultMap" parameterType="String">
        <include refid="selectMember"/>
        and safetylevel > 1
        and stauts = 1

        <if test="_parameter != null">
            and username = #{username} 
        </if>
    </select>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: