1. 程式人生 > >關於mybatis的動態if語句查詢報錯問題和解決方法

關於mybatis的動態if語句查詢報錯問題和解決方法

在mybatis類似於報錯

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

在不去掉if標籤的情況下 有2個解決方法
解決方法1
在.xml檔案中把username換成_parameter,該方法適用於單個引數,如下

    <select id="selectUserbyName" parameterType="String" resultMap="user">
        select
        <include refid="queryColumns"
/> from z_user,z_basic <where> <if test="username != null"> username like CONCAT('%',#{username},'%' ) </if> </where> </select>
    <select id="selectUserbyName" parameterType="String" resultMap="user"
> select <include refid="queryColumns" /> from z_user,z_basic <where> <if test="_parameter != null"> username like CONCAT('%',#{username},'%' ) </if> </where> </select> <select
id="selectAllUser" resultMap="user"> select <include refid="queryColumns" /> ,text,password,z_basic.id from z_user,z_basic where z_user.id=z_basic.z_basic.id </select>

解決方法2

在mapper介面中引數列表裡宣告@Param(“username”)
如下

List<User> selectUserbyName(@Param("username")String username);

在mapper對應的xml中#{username}匹配的是username對應的@Param名字

該方法可適用於多引數傳值,也可解決此類報錯問題

Parameter 'city' not found. Available parameters are [1, 0, param1, param2]] with root cause

希望以上兩種方法對大家有用