<sql>像这样的元素:

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

它用于 <update> :

<update id="update" parameterType="MyTableBean"> 
    UPDATE MyTable 
    <include refid="update_fragment"/> 
    WHERE id =# {id} 
</update> 

在 DAO 中:

Integer update(MyTableBean myTableBean); 

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

Integer batchUpdate(@Param("ids")List<Integer> ids, @Param("bean")MyTableBean myTableBean); 

我想重新使用“update_fragment”<sql>元素。

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

但是'update_fragment'中的范围似乎是错误的。
看来我得重写一个<sql>这改变了#{id}#{bean.id} .

有什么方法可以在不重写新的 <sql> 的情况下重新使用该语句.

请您参考如下方法:

您可以尝试在您的更新方法中添加@Param 注释:

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> 

因此,这将为您增加一些通用性。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!