mybatisplus批量修改,mybatis批量更新数据

  mybatisplus批量修改,mybatis批量更新数据

  00-1010批量修改主要有两种方式:第一种,第二种,mysql和mybatis批量更新数据更新mysql批量更新mybatis批量更新更新

  

目录

 

  00-1010可以通过for循环逐个修改数据,会影响效率,不推荐,这里就不多说了。

  

批量修改主要有两种方式

通过修改mybatis中的mapper.xml文件,如下所示:

 

   update id= updaterolemanues parameter type= Java . util . list foreach collection= list item= item index= index open= close= separator=;update TB _ ROLE _ MENU set FID=# { item . FID }/set where ROLEID=# { item . ROLEID }/foreach/update

  

第一种

 

  00-1010使用case when语句。数据表如下:

  case1:

  其中年龄是非空字段。Sql如下所示

  更新1设置年龄=大小写当id=2时THEN 1当id=3时THEN 2 END其中ID IN (2,3,4)用ID 2,3,4设置年龄字段,ID 2的设置为1,3的设置为2。结果是:

  列“年龄”不能为空。

  原因是id=4与上面的when不匹配,所以默认会设置为null。也就是说,不匹配的记录将不会保留其原始值,而是被设置为null。

  case2:

  如果要设置默认值,可以写成:

  更新1设置年龄=大小写当ID=2 THEN 1当ID=3 THEN 2 ELSE30 END WHERE ID IN (2,3,4)结果为

  可以看到id=4设置为30,即可以通过else default_value为不匹配的行设置默认值。

  case3:

  如果要为不匹配的行设置原始值,可以编写如下内容:

  更新1当ID=2时设置年龄=大小写当ID=3时设置EN 1当id=4时设置EN 2,然后测试1。AGEENWHERE ID IN (2,3,4)这样,ID=4的行可以通过test1.age保持原来的值,可以看出这种写法在mybatis中的用处。

  

第二种

对应以上案例写xml。

 

  通常,在编写代码时,有时不更新的字段不会在对象中设置。例如,Person对象有三个属性,即id、姓名和年龄,它们对应于数据库中的三个字段。如果不想更新id=4的年龄,通常不会设置age的值,即age=null,在case1中会被误设为null。有关详细信息,请参见以下代码。

  case1:

  更新test 1 settrim prefix= age=case suffix= end, foreach collection= list item= item index= index if test= item . age!=null 当ID=# { item . ID } then # { item . age }/If/foreach/trim trim prefix= name=case suffix= end, foreach collection= list item= item index= index 当ID=# { item . ID } then # { item . name }/foreach/trim/Set ID in foreach collection= list item= index= index separator=, open=( close=) # { item . ID }/foreach当有因此,当id=4的数据被传递到sql中时,原始数据将被删除并设置为null。

  case2:

  更新test 1 settrim prefix= age=case suffix= end, foreach collection= list item= item index= index if test= item . age!=null 当id=# { item . id } then # { item . age }/if/foreach else 30/trim trim prefix= name=case suffix= end, foreach collection= list item= item index= index 当id=# { item . id } then # { item . name }/foreach/trim/Set id in foreach collection= list item= index= index 分隔符=, open=( close=) # { item . id }/foreach

  case3:

  更新test 1 settrim前缀= age=case 后缀= end, foreach collection= list item= item index= index if test= item。年龄!=null 当id=#{item.id}然后# { item。age }/ifif test= item。“年龄==空”当id=#{item.id}然后test1.age/if/foreach/trimtrim前缀=name=case 后缀=end, foreach collection= list item= item index= index 当id=#{item.id}然后# { item。name }/foreach/trim/set其中id在每个集合= list item= index= index 分隔符=,打开=(关闭=通过如果标签,若传入的属性为空,则保持数据库原值。

  补充:

  更新多条数据同一字段为同一值:

  更新test1设置年龄=24其中id in(2,3,4);以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: