mysql和Mapper中批量更新資料寫法
阿新 • • 發佈:2018-12-14
- mapper寫法:
<update id="updateOrderStateByOrderId" parameterType="java.util.List"> update t_replace_order set Forder_state = <foreach collection="list" item="item" index="index" separator=" " open="case Forder_id" close="end"> when #{item.orderId,jdbcType=BIGINT} then #{item.orderState,jdbcType=INTEGER} </foreach> ,Forder_state_desc = <foreach collection="list" item="item" index="index" separator=" " open="case Forder_id" close="end"> when #{item.orderId,jdbcType=BIGINT} then #{item.orderStateDesc,jdbcType=VARCHAR} </foreach> ,Fmodify_time= <foreach collection="list" item="item" index="index" separator=" " open="case Forder_id" close="end"> when #{item.orderId,jdbcType=BIGINT} then #{item.modifyTime,jdbcType=TIMESTAMP} </foreach> where Forder_id in <foreach collection="list" index="index" item="item" separator="," open="(" close=")"> #{item.orderId,jdbcType=BIGINT} </foreach> </update>
//這句sql的意思是,更新Forder_state欄位,如果Forder_id=#{item.orderId,jdbcType=BIGINT} 則Forder_state的值為
//#{item.orderState,jdbcType=INTEGER}更多Forder_id和需要更新的欄位就以此類推
- dao介面
//Map中key對應mysql中取值欄位,Map中value對應取值欄位的值,把map看做一個bean更加好理解 Integer updateOrderStateByOrderId(@Param("list")List<Bean> list);
- 邏輯呼叫
List<Bean> list = //Bean集合
//批量更新
Integer num = updateOrderStateByOrderId(list);
- 對應mysql中寫法:
UPDATE ticket_db.t_replace_order SET Forder_state = CASE Forder_id WHEN '1' THEN 0 WHEN '2' THEN 2 WHEN '3' THEN 1 END WHERE Forder_id IN ( '1', '2', '3' )
//這句sql的意思是,更新Forder_state欄位,如果Forder_id=1 則Forder_state的值為0,
//如果Forder_id=2 則dingdan的值為2,如果Forder_id=3 則Forder_state的值為1,更多Forder_id就以此類推
批量插入
int insertMore(List<Fenci> record);
<insert id="insertMore" parameterType="java.util.List">
insert into t_fenci ( Fword, Ftype,
Fto_id, Flocation, Fnum,
Fword_type,Fstart_offset, Fend_offset,
Fcreate_time, Fmodify_time)
values
<foreach collection ="list" item="reddemCode" index= "index" separator =",">
(
#{reddemCode.word}, #{reddemCode.type},
#{reddemCode.toId},
#{reddemCode.location},
#{reddemCode.num}, #{reddemCode.wordType},#{reddemCode.startOffset},#{reddemCode.endOffset},
#{reddemCode.createTime},#{reddemCode.modifyTime}
)
</foreach >
</insert>