標籤:no-getter for-proper string
前言:很不幸,也遇到了“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'