前言:很不幸,也遇到了“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>
版权声明:本站博客均为qing_gee原创文章,若您需要引用、转载,只需要注明来源及原文链接即可。
There is no getter for property named in 'class java.lang.String'