专栏首页偏前端工程师的驿站MyBatis魔法堂:各数据库的批量Update操作

MyBatis魔法堂:各数据库的批量Update操作

一、前言                                  

  MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了。本篇仅记录批量update操作的sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了。

注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚。

二、MSSQL的SQL语句                          

WITH R AS(
  SELECT 'John' as name, 18 as age, 42 as  id
  UNION ALL
  SELECT 'Mary' as name, 20 as age, 43 as  id
  UNION ALL
  SELECT 'Kite' as name, 21 as age, 44 as  id
)
UPDATE TStudent SET name = R.name, age = R.age
FROM R WHERE R.id = TStudent.Id

三、MSSQL、ORACLE和MySQL的SQL语句                

UPDATE TStudent SET Name = R.name, Age = R.age
from (
SELECT 'Mary' as name, 12 as age, 42 as id
union all
select 'John' as name , 16 as age, 43 as id
) as r 
where ID = R.id

四、SQLITE的SQL语句                          

当条更新:

REPLACE INTO TStudent(Name, Age, ID)
VALUES('Mary', 12, 42)

批量更新:

REPLACE INTO TStudent(Name, Age, ID)
SELECT * FROM (
 select 'Mary' as a, 12 as b, 42 as c
 union all
 select 'John' as a, 14 as b, 43 as b
) AS R

说明:REPLACE INTO会根据主键值,决定执行INSERT操作还是UPDATE操作。

五、总结                                  

  本篇突出MyBatis作为半自动ORM框架的好处了,全手动操控SQL语句怎一个爽字了得。但对码农的SQL知识要求也相对增加了不少,倘若针对项目要求再将这些进行二次封装那会轻松比少。

六、参考                                  

http://feng10251225.blog.163.com/blog/static/6312279820114302391320/

http://www.cnblogs.com/liping13599168/archive/2011/05/24/2054908.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基础野:细说有符号整数

    Breif                                本来只打算理解JS中0.1 + 0.2 == 0.30000000000000004的...

    ^_^肥仔John
  • JS魔法堂:IMG元素加载行为详解

    一、前言                               在《JS魔法堂:jsDeferred源码剖析》中我们了解到img元素加载失败可以作为函数异...

    ^_^肥仔John
  • 基础野:细说无符号整数

    Brief                                 本来只打算理解JS中0.1 + 0.2 == 0.30000000000000004...

    ^_^肥仔John
  • 字符串、数组去重

    ProsperLee
  • “协力抗疫,码力 全开”线上黑客马拉松+29号健健康康小队+学生返校疫情排查

    ①学生需求-疫情期间确保自身生命安全:确保返校途中自身安全、返校后生活和学习如何展开

    健健康康小队
  • IBatisNet之获取和操作SQL语句

    IBatisNet和其他的ORMapping的工具相比较,可以说是一个sqlmap,所以在Why use iBATIS SQL Maps? 中有一条理由是 Y...

    张善友
  • Mac 下安装使用numpy出错解决方法

    简单、
  • Python和Scala的类和对象(一)

    前面的文章我们更多的是关注于函数,现在开始进入面向对象的世界了。函数是一种对过程的抽象,它提供了单一的入口和出口,封装了一系列的逻辑处理,而类和对象更像是对物体...

    哒呵呵
  • 移动互联网时代P2P经济爆发式增长

    本文首发百度百家。 打车App之火灭掉之后,我们不妨将目光放到更多的汽车应用,它们在过去数年间已经积累不少。车载导航仪、手机导航App、路况分享App...

    罗超频道
  • 如何在Debian 9上安装和保护phpMyAdmin

    虽然许多用户需要像MariaDB这样的数据库管理系统的功能,但他们可能不会仅仅通过MariaDB提示与系统进行交互。

    好烟

扫码关注云+社区

领取腾讯云代金券