mysql和Mapper中批量更新数据写法

  • 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>

猜你喜欢

转载自blog.csdn.net/WangAnJiao/article/details/82021175