Database 在MyBatis中,如何设置<;sql>;再利用元素

Database 在MyBatis中,如何设置<;sql>;再利用元素,database,config,mybatis,Database,Config,Mybatis,元素如下: <sql id="update_fragment"> <set> <if test="id != null"> id = #{id}, </if> <if test="name != null"> id = #{name}, </if> ... </set>

元素如下:

<sql id="update_fragment">
    <set>
        <if test="id != null">
            id = #{id},
        </if>
        <if test="name != null">
            id = #{name},
        </if>
        ...
    </set>
</sql>        

现在,我编写一个batchUpdate方法:

Integer batchUpdate(@Param("ids")List<Integer> ids, @Param("bean")MyTableBean myTableBean);
Integer update(@Param("bean") MyTableBean myTableBean);
Integer batchUpdate(@Param(“ids”)列表id、@Param(“bean”)MyTableBean MyTableBean);
我想重复使用“update\u fragment”元素

<update id="update">
    UPDATE MyTable
    <include refid="update_fragment"/>
    WHERE ids IN
    <foreach>...</foreach>
</update>

更新MyTable
身份证在哪里
...
但“更新片段”中的范围似乎是错误的。
似乎我必须重写一个
,它将
{id}
更改为
{bean.id}


可以在不重写新的

的情况下重新使用该语句。您可以尝试将@Param注释添加到更新方法中:

Integer batchUpdate(@Param("ids")List<Integer> ids, @Param("bean")MyTableBean myTableBean);
Integer update(@Param("bean") MyTableBean myTableBean);
然后更正sql表达式:

<sql id="update_fragment">
<set>
    <if test="id != null">
        id = #{bean.id},
    </if>
    <if test="name != null">
        id = #{bean.name},
    </if>
    ...
</set>

id=#{bean.id},
id=#{bean.name},
...
因此,这将为您增加一些普遍性