动态Sql

批量更新

批量更新的时候要同时执行多条update语句
这个时候就需要在jdbc的url变成
++jdbc:mysql://10.19.15.26:3306/etrip?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true++

<update id="updateBatchCarOrder" parameterType="java.util.List">
<!--collection方法传入的List名字-->
<!--item上面的list循环的变量
    separator:循环的时候中间的分割
    open:是循环开始的时候会先加到前面
    close: 是循环结束的时候会补充到后面
-->
        <foreach collection="list" item="item" separator=";">
            UPDATE car_order
            <!--set update语句中的set关键字-->
            <set>
                is_valid = #{item.isValid},
                update_time = #{item.updateTime},
                update_user = #{item.updateUser}
            </set>
            <where>
                order_id = #{item.orderId}
            </where>
        </foreach>
    </update>

批量插入

mysql批量插入的语法可以在insert后面的values中增加多个

<insert id="saveBatchCarOrder" parameterType="java.util.List">
        INSERT INTO car_order
          (order_id, order_creater, rider, riding_time, start_site, end_site, pay_method, amount_due, amount_payable, service,
              is_valid, cost_center_id, create_time, create_user, update_time, update_user)
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (#{item.orderId}, #{item.orderCreater}, #{item.rider}, #{item.ridingTime}, #{item.startSite}, #{item.endSite}, #{item.payMethod},
              #{item.amountDue}, #{item.amountPayable}, #{item.service}, #{item.isValid}, #{costCenterId}, #{item.createTime},
                #{item.createUser}, #{item.updateTime}, #{item.updateUser})
        </foreach>
    </insert>

在XML中使用map作为参数

在sql中的引入是直接使用map中的key,得到的就是value

<update id="updateByOrderId" parameterType="java.util.Map">
        UPDATE car_order SET
        is_valid = #{isValid, jdbcType=INTEGER},
        update_time = #{updateTime, jdbcType=TIMESTAMP},
        update_user = #{updateUser, jdbcType=VARCHAR}
        where order_id = #{orderId, jdbcType=VARCHAR} AND is_valid = 1
 </update>
 <!--params是map参数的名字-->
 <update id="updateByOrderId" parameterType="java.util.Map">
         UPDATE car_order SET
        <if test="params.isValid != null">
        is_valid = #{params.isValid, jdbcType=INTEGER},
        </if>
        update_time = #{updateTime, jdbcType=TIMESTAMP},
        update_user = #{updateUser, jdbcType=VARCHAR}
        where order_id = #{orderId, jdbcType=VARCHAR} AND is_valid = 1
 </update>

模糊查询

用参数名点出来的属性

<select id="updateByOrderId" parameterType="java.util.Map">
  select * from user where username like '%${params.username}%'
 </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值