mybatis oracle mysql 批量插入时的坑爹问题--需谨记
mybatis oracle mysql 批量插入
一、oracle的批量插入方式
insert into db(id, zgbh, shbzh)
select '1', '2', '3' from dual
union all select '2', '3', '4' from dual
union all select '3', '4', '5' from dual
union all select '4', '5', '6' from dual
union all select '5', '6', '7' from dual
<insert id="insertMoSmsList" parameterType="com.xxx.XxxBean">
INSERT INTO TBL_xxx_DETAIL
(
id, zgbh, shbzh, ReceiveTime
) SELECT SEQ_xxx_DETAIL.NEXTVAL, A.* FROM(
<foreach collection="list" item="item" index="index" separator="UNION ALL">
<![CDATA[
SELECT
#{item.id, jdbcType=INTEGER} AS id,
#{item.zgbh, jdbcType=VARCHAR} AS zgbh,
#{item.shbzh, jdbcType=VARCHAR} AS shbzh,
TO_DATE(#{item.receiveTime, jdbcType=DATE},'yyyy-mm-dd hh24:mi:ss') AS ReceiveTime
FROM dual
]]>
</foreach>
) A
</insert>
二、mysql的批量插入方式
INSERT INTO MyTable(ID,NAME) VALUES (7,'003'),(8,'004'),(9,'005')
<insert id="insertBatch" >
insert into student ( NAME,SEX,ADDRESS,TELEPHONE,TID)
values
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item.name},
#{item.sex},
#{item.address},
#{item.telephone},
#{item.tId}
</foreach>
</insert>
三、容易发生的异常(坑爹)
1. "A.*" 无效列
引用 ORA-00918:未明确定义列
解决方法:
#{item.senderPhone, jdbcType=VARCHAR} AS SenderPhone
如果不设置列名,那么#{item.senderPhone}的值就是默认列名,那么就有很多概率会产生列名重复,而产生异常。(两个列的值完全可能一样)
2. #{item.receiveTime} 值为null时,必须指定转换类型
引用 JDBC requires that the JdbcType must be specified for all nullable parameter
MyBatis 插入空值时,需要指定JdbcType
mybatis insert空值报空值异常,但是在pl/sql不会提示错误,主要原因是mybatis无法进行转换;
解决方法:
因为你传入的参数的字段为null对象无法获取对应的jdbcType类型,而报的错误。
你只要在insert语句中insert的对象加上jdbcType就可以了,修改如下:
#{item.receiveTime, jdbcType=DATE} AS ReceiveTime,
TO_DATE(#{item.receiveTime, jdbcType=DATE},'yyyy-mm-dd hh24:mi:ss') AS ReceiveTime,
mybatis oracle mysql 批量插入时的坑爹问题--需谨记的更多相关文章
- Oracle/Mysql批量插入的sql,效率比较高
1.oracle 批量插入: insert into tableName(col1,col2,col3...) select 1,'第一行第一列值','第二列值' from dual union ...
- mybatis+oracle的批量插入
// 批量插入,手动控制事务 SqlSession batchSqlSession = null; try { batchSqlSession = sqlSessionTemplate.getSqlS ...
- MyBatis之Oracle、Mysql批量插入
Mybatis中Dao层 public interface UsersMapper { public void insertEntitys(List<UserEntity> users); ...
- Mybatis+mysql批量插入性能分析测试
前言 今天在网上看到一篇文章(后文中的文章指的就是它) https://www.jianshu.com/p/cce617be9f9e 发现了一种有关于mybatis批量插入的新方法,而且看了文章发现我 ...
- mybatis + mysql 批量插入、删除、更新
mybatis + mysql 批量插入.删除.更新 Student 表结构 批量插入 public int insertBatchStudent(List<Student> studen ...
- mybatis+mysql批量插入和批量更新、存在及更新
mybatis+mysql批量插入和批量更新 一.批量插入 批量插入数据使用的sql语句是: insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo, ...
- mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法
[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问 ...
- MyBatis 使用 foreach 批量插入
MyBatis 使用 foreach 批量插入 参考博文 老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入 使用MyBatis一次性插入多条数据时候可以使用 <for ...
- mysql批量插入简单测试数据
mysql批量插入简单测试数据 # 参考网址: https://www.2cto.com/database/201703/618280.html 1.mysql创建测试表 CREATE TABLE ` ...
随机推荐
- 记一次配置阿里云ECS GPU计算型gn5实例
基础配置 CPU: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz * 16 MEM: 120 GiB GPU: NVIDIA P100 * 2 OS: Ubunt ...
- Jquery 学习-菜鸟教程
jquery效果和元素选择 //元素选择 $(this).hide(); $("p.test") //隐藏所有class="test"的<p>元素 ...
- JS中的SRC
当应用SRC属性时,首先需要创建一个JS文件.为什么不在此文件中使用<script>标记?您可以直接使用输出语句吗?我会分享我的报告一个答案 JS文件不是HTM文件,因此内部不能有HTML ...
- cookie以一个或多个空格开头
作为一个整体,如果cookie以一个或多个空格开头,请用空格替换所有空格:如果cookie以一个或多个空格结尾,请用空格替换所有空格. 象征意义: \ S:空间,空间 +一个或多个 ^开始,^s,以空 ...
- <(* ̄▽ ̄*)/低碳生活管理系统
首次在博客园发布文章,都是个人理解,有很多不足,多多包涵. 下面是对做过的作业低碳生活管理系统的剖析: 一:(建类) 二:(在Program[或自己命名的类]里调用SQL命名空间) 三:(Main方法 ...
- vue 节流
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java反射【三、方法的反射】
获取一个类下的所有方法 可以获取类类型后,获取到所有方法及相关信息 Method[] ms = c.getMethods(); 获取方法列表(public) Method[] ms = c.getDe ...
- 14、yum仓库搭建
一.本地仓库 1.yum搭建本地仓库(单台如何实现) 1) 挂载cd光盘,因为里面很多的软件包 [root@www.oldboyedu.com ~]# mount /dev/cdrom /mnt 2) ...
- 09-【el表达式和jstl标签库】
el表达式和jstl标签库 一:el表达式:表达式语言,jsp页面获取数据比较简单1.el表达式的语法(掌握)el表达式通常取值是获取作用域对象中的属性值:${属性名}=>是el表达式的简写的形 ...
- imx6ull增加qt5 qtserialbus库
meta-qt5库地址:https://code.qt.io/cgit/yocto/meta-qt5.git/ 1.在fsl-release-yocto/sources/meta-qt5/reci ...