SpringBoot中使用mybatis将list集合插入到Oracle数据库(亲测有用!)

SpringBoot中使用mybatis将list集合插入到Oracle数据库(mybatis配置一次性插入,不需要在Java代码里写循环插入代码)

注意,此处是向mybatis中传入list,该list是所有需要插入数据库的记录条数(每条记录里只有一个字段).
本身自己是一个小菜鸡,尝试了很多种写法,参考了网上很多资料,发现至少是应用在自己的环境中,大部分的写法无法使用,于是写下此文.,也算对得起自己几个小时的工作量.开发环境是公司内网,所以大致是按照印象写的.如果错漏,请多包涵,欢迎留言!

技术环境

mybatis+springboot+Oracle
(此处说明是Oracle是因为mybatis对Oracle和MySQL写法上 有些情况下不太相同)

Services层

在serviceImp中,定义了myList数据,用于存储之后向数据库插入的list数组.

List<String> myList= new ArrayList<>();

我将前台传入的数据,处理后装入myList,再调用mapper.java里面定义的函数,将myList作为参数传入,传入参数的类型是list.

Dao层

  1. 在Mapper.java里面定义的函数,记得在参数列表前要加上@Param ,如下
    (@Param List myList)
  2. 使用的是mybatis,在Mapper.xml 中写sql语句.
<insert id="insertYHC" parameterType="list" useGeneratedKeys="false">	 
	 	INSERT INTO oracle_table(tyc)
		<foreach collection="myList" item="item" index="index" separator="union all">
			SELECT 
				(#{item})
			FROM DUAL
		</foreach> 
</insert>

Tips:

  1. insert id="insertYHC" parameterType="list" useGeneratedKeys="false",,
    id是mapper.java里对应的函数名,parameterType是该函数的参数类型,useGeneratedKeys="false"好像没什么用
  2. INSERT INTO oracle_table(tyc),,,
    oracle_table是Oracle中的表名,tyc是里面的字段,!!!注意此处没有"Values"!!!
  3. <foreach collection="list" item="productRole" index="index" separator="union all">,,,
    此处!!!注意collection中的list是你在mapper.java里对应的函数名里的参数名字,item中的item跟foreach里面的(#{item})对应上就行,大概跟我们那种for(item:items)遍历里面对象写法有类似之处,index="index"这句感觉也没啥用.注意!!!separator=“union all”,如果你像我一样,传的列表myList里面每个对象都是一个string,填union all.
  4. SELECT (#{item}) FROM DUAL,,
    这里(#{item})对应上面的item就行,注意!!如果你像我一样传入的list每个对象都是一个字符串,那不需要再在item后加上".字段"了.
  5. 最后说下,看百度上,Dual,简单的说就是一个空表,Oracle提供的最小的工作表,只有一行一列.
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值