mybatis批量插入,更新,删除

MySQL中,insert后面带上 on duplicate key update 子句,数据库中存在记录时,执行这个语句会更新,而不存在这条记录时,就会插入。 
insert into tablename(field1,field2,field3,......) values(value1,value2,value3,....) on duplicate key update field1=values(value1),field2=values(value2),field3=values(value3),......;
 insert into `person_device`(`person_id`,`device_id`,`type`)
        values
       
            (#{item.personId}, #{item.deviceId}, #{item.type})
       

        on duplicate key update `type`=values(`type`)

//重复主键不插入
INSERT IGNORE INTO 表示,检查主键(PrimaryKey)可能是联合主键,如果数据库中已经存在相同的记录,则忽略当前新数据插入;
   
        insert ignore into `person_device`(`person_id`,`device_id`,`type`)
        values
       
            (#{item.personId}, #{item.deviceId},0)
       

   

输出
==>  Preparing: insert ignore into person_office(person_id,office_id) values (?,?)
==> Parameters: 2(Integer), 10000(String)
<==    Updates: 0

//批量删除 (or条件)
   
            DELETE FROM person_device
            WHERE
           
                (person_id=#{item.personId} AND device_id=#{item.deviceId})
           

   

输出
==>  Preparing: DELETE FROM person_device WHERE (person_id=? AND device_id=?) or (person_id=? AND device_id=?) or (person_id=? AND device_id=?)
==> Parameters: 3(Integer), CH3U212760001(String), 100(Integer), CH3U212760001(String), 12(Integer), CH3U212760001(String)
<==    Updates: 0


//批量updte (ignore可以去掉)

       
            update ignore person_device
           
                device_id=#{item.deviceId}
           

           
                person_id=#{item.personId}
           

       

   

输出
==>  Preparing: update ignore person_device SET device_id=? WHERE person_id=?
==> Parameters: CH3U212760002(String), 2(Integer)
<==    Updates: 0
 

你可能感兴趣的:(mysql,数据库,mysql,sql)