要做批量插入数据库,首先得知道该数据库对批量插入所支持的语法。每个数据库批量插入的语法都不一样,我介绍两种。
MySQL:1、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三'),(2,'李四')
2、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三');INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,'李四')
Oracle:1、INSERT INTO TABLE_NAME (ID,NAME) (SELECT 1,'张三' from dual) union all (SELECT 2,'李四' from dual)
2、INSERT INTO TABLE_NAME (ID,NAME) VALUES(1,'张三');INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,'李四')
4条SQL都是数据库支持的写法。两者的第二种是不推荐的写法,因为不管效率还是可读性上都远差于第一种
当然,还有更重要的一点,Mybatis不支持第二种写法,因为mybatis的一个事务只支持一条SQL
所以,Mybatis里写法只能取两者的第一种,代码如下
MySQL
<select id="batchSave" parameterType="java.util.List">
INSERT INTO TABLE_NAME(ID,NAME) VALUES
<foreach collection="list" item="itm" separator=",">
(#{itm.id},#{itm.name})
</foreach>
</select>
ORACLE:
<select id="batchSave" parameterType="java.util.List">
INSERT INTO TABLE_NAME(ID,NAME)
<foreach collection="list" item="itm" separator="union all">
(SELECT #{itm.id},#{itm.name} FROM DUAL)
</foreach>
</select>
这里要注意了,标签一定得是<SELECT>,不能是<INSERT>或者<UPDATE>,否则就要报错。。
不要问哥为什么会报错,哥也不知道,哈哈哈哈哈啊哈哈哈。。。(太懒,不想去查资料了,有兴趣的可以去查下)
分享到:
相关推荐
在MyBatis中,批量插入数据是一种提高性能的有效方式,特别是在处理大量数据时。本文将详细介绍如何在MyBatis中实现批量插入,并通过一个具体的示例来说明。批量插入操作通常涉及以下关键步骤: 1. **实体类定义**...
Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不存在则插入。下面是该方法的详细介绍: ...
MyBatis foreach批量插入数据:Oracle与MySQL区别介绍 MyBatis foreach批量插入数据是一种高效的数据批量插入方式,通过foreach标签可以实现批量插入数据。但是,在不同的数据库管理系统中,foreach标签的使用有...
本文将深入探讨MyBatis中实现批量插入的两种高效方式。 ### 1. MyBatis `foreach` 标签 `foreach` 是MyBatis中用于在SQL语句中迭代集合的标签,特别适合构建`IN`条件。`foreach` 元素的属性包括: - `item`: 集合...
2. `insert`标签:用于插入新记录,支持批量插入。 3. `update`标签:用于更新现有记录,同样可以利用动态SQL进行条件判断。 4. `delete`标签:用于删除记录,依据特定条件执行。 实体类Java文件则是数据库表的Java...
本文将详细介绍如何使用Mybatis进行批量插入,包括针对MySQL和Oracle两种不同数据库的实现方式。 一、Mybatis批量添加基础 Mybatis允许开发者直接传递一个集合到Mapper接口的方法中,然后在映射文件中通过`...
本文将详细讲解如何使用MyBatis的注解方式在MySQL和Oracle数据库上实现批量处理,旨在提高数据操作的效率。 首先,我们要理解MyBatis的核心原理,它是一个基于Java的持久层框架,通过XML或注解来映射SQL语句,简化...
这样做是因为Oracle不支持像MySQL那样的`VALUES`子句进行批量插入,所以我们需要模拟这个过程,通过`UNION ALL`将多个单行查询组合成一个大的`SELECT`。 在Service层,我们定义了`addBleaseList`方法,它接收一个`...
"Mybatis调用Oracle存储过程传List...使用Mybatis传List参数调用Oracle存储过程,可以实现批量插入数据,解决了Mybatis批量插入数据的限制问题。同时,这种方法也可以灵活地控制事务回滚,提高了系统的可靠性和性能。
总之,当在Oracle数据库中使用MyBatis进行批量插入时,务必注意适应Oracle的特定语法,如使用`INSERT ALL`,避免使用MySQL等其他数据库系统适用的语法,如逗号分隔的`VALUES`列表。同时,确保正确处理主键生成逻辑,...
Mybatis 插入一条或批量插入 返回带有自增长主键记录的实例 Mybatis 是一个基于 Java 的持久层框架,它提供了对数据库的访问和操作的功能。今天,我们将分享一个关于 Mybatis 插入一条或批量插入 返回带有自增长...
在MyBatis的配置文件中,你可能已经为其他支持自增主键的数据库(如MySQL)设置了`useGeneratedKeys="true"`,但对Oracle来说,因为自增机制不同,需要在插入语句中显式调用序列。所以,对于Oracle,你需要按照上述...
如果需要批量插入,可以考虑使用`batchUpdate()`方法。 6. **错误处理**:在整个过程中,一定要捕获并处理可能出现的异常,保证系统的稳定运行。 7. **事务管理**:为了确保数据的一致性,可以在一个事务中完成...
在实际开发中,分页查询通常需要结合数据库特定的分页语法,例如MySQL的LIMIT和OFFSET,Oracle的ROWNUM等,mybatis-generator-plus会根据不同的数据库方言生成对应的分页SQL。 在使用mybatis-generator-plus时,你...
对于数据库操作,MySQL Workbench、Oracle SQL Developer等可视化工具可以帮助编写和执行SQL语句,验证批量插入的效果。 总的来说,Struts2批量插入涉及到前端表单提交、Action处理、数据库操作等多个环节,理解并...
MyBatis-Plus是一个强大的MyBatis扩展框架,它简化了常见的CRUD操作,提供了诸如自动填充、条件构造器、批量插入等实用功能。在这个"mybatis-plus学习项目笔记"中,我们可以深入探讨MyBatis-Plus的核心特性,以及...
4. **批量插入与更新**:支持单个对象和List对象的批量插入和更新操作,提高数据库操作效率。 5. **分页插件**:内置了物理分页插件,兼容多种数据库,如MySQL、Oracle等,无需手动编写分页代码。 6. **数据权限...
内置了分页插件,可以方便地实现分页查询,支持多种数据库的分页方式,如 MySQL、Oracle 等,使用 `Page` 对象进行分页参数设置和结果接收。 6. **主键生成策略**: 提供了多种主键生成策略,包括 Identity(自动...
- **Oracle下的批量插入**:Oracle数据库有自己的批量插入语法,可能与MySQL有所不同,此视频会对比分析两种数据库的批量操作差异。 4. **50.尚硅谷_MyBatis_动态sql_sql_抽取可重用的sql片段.avi** - **SQL片段...