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,在l 中写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"
springboot是啥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提供的最⼩的⼯作表,只有⼀⾏⼀列.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论