常见的动态sql操作(批量插入,批量更新,批量删除,trim)

266 阅读1分钟

批量插入

<insert id="batchInsert">
    insert into student(id, name)
    values
    <foreach collection="list" item="item" separator=",">
        (#{item.id},#{item.name})
    <foreach>
</insert>

//sql语句
insert into student(id, name) values (1,"张三"),(2,"李四")

批量更新selective

<udpate id = "batchUpdate">
    <foreach collection="list" item="item" separator=";">
    update student set
        <set>
            <if test="item.id != null">
                id = #{item.id,jdbcType=BIGINT},
            </if>
             <if test="item.name != null">
                name = #{item.name,jdbcType=VARCHAR},
            </if>
        </set>
    <foreach>
</update>

//原sql语句
update student set id = 1, name = "张三";
update student set id = 2, name = "李四";

批量删除

<delete id = "batchDelete">
    delete from student where id in
     <foreach collection="list" item="item" separator="," open="(" close=")">
     #{item.id}
     </foreach>
</delete>

//sql语句
delete from student where id in (1,2,3)

trim用法

//1.如果前缀为WHERE,去除AND, 用于多条件查询
<trim  prefix="WHERE" prefixOverrides="AND" >
</trim>

//2.如果前缀为set,去除“,”, 用于多set
<trim prefix="SET" suffixOverrides=",">
<trim>