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知识要求也相对增加了不少,倘若针对项目要求再将这些进行二次封装那会轻松比少。

时间: 2024-11-28 14:40:41

MyBatis魔法堂:各数据库的批量Update操作的相关文章

各数据库的批量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,

MyBatis魔法堂:ResultMap详解

一.前言     MyBatis是基于"数据库结构不可控"的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转换的手段了,而resultMap就是结果集映射的配置标签了.   二.从SQL查询结果到领域模型实体   在深入ResultMap标签前,我们需要了解从SQL查询结果集到JavaBean或POJO实体的过程.   1. 通过JDBC查询得到ResultSet对象   2. 遍历ResultSet对

ADO.NET下的SqlBulkCopy类执行数据库间批量复制操作

  很多时侯,我们需要在数据库间复制大量数据,如SQLSERVER提供的BCP.EXE命令行工具,如ADO.NET下   SqlBulkCopy类提供了一个高性能的方法WriteToServer来复制数据.该方法可以接受一个DataRow对像数据.一   个实现IDbDataReader接口的对像和一个DataTable,或者接受一个DataTable对像和一个DataRowState枚举值,   以实现从大多数位置中获取数据.                      /// <summary

MyBatis魔法堂:Insert操作详解(返回主键、批量插入)

一.前言      数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅.   二. insert元素 属性详解   其属性如下:    parameterType ,入参的全限定类名或类型别名    keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置    keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元

MyBatis魔法堂:即学即用篇

一.前言                     本篇内容以理解MyBatis的基本用法和快速在项目中实践为目的,遵循Make it work,better and excellent原则. 技术栈为MyBatis3.2.7+log4j1.2.17+sqlite3+jdk1.7.   二.示例         示例代码功能:     学校人员管理系统,对象分别为学生.教师和班级,学生与班级为多对一关系,班级与教师为一对多关系.示例代码主要为操作学生对象.   1. 表结构   学生表(TStud

MyBatis学习 之 七、mybatis各种数据库的批量修改

    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,

mybatis-Mybatis操作Oracle数据库:批量修改成功后返回的值是-1?

问题描述 Mybatis操作Oracle数据库:批量修改成功后返回的值是-1? Mapper.xml <update id="updateByMultiConditions" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="begin"

mybatis-使用MyBatis框架向MySQL数据库增加数据使用浏览器访问出现错误

问题描述 使用MyBatis框架向MySQL数据库增加数据使用浏览器访问出现错误 org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [2, 1, 0, param1, param2, param3] at org.apache.ibatis.binding.MapperMethod$ParamMap.get(MapperMethod.java:165)

sql server-mysql中datatable往数据库中大批量写入数据,类似sqlbulkcopy的类

问题描述 mysql中datatable往数据库中大批量写入数据,类似sqlbulkcopy的类 这个是sql server的写入数据库部分代码 不知道这样利用mysqldataadapter的update行不行 解决方案 多列数据的话,可以用sql语句.MySQL有一个executemany函数.一次插入多条数据.