關於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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章