批量更新
批量更新的时候要同时执行多条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>