mybatis循环sql语句怎么写

mybatis循环sql语句怎么写,第1张

经过测试,批量 *** 作数组时,总是提示出错,Java.util.Array

找不到

可能要携程ArrayList就行了,但是我插入的数据

是String

[]

ids=str.split(",")这种形式的,不能用ArrayList吧,反正这个没成功,后来我又把str转换成

List,才可以用collection=list来批量 *** 作。

List

a=ArraYlsit.asList(str)

在使用foreach的时候最容易出错的就是collection属性,该属性是必须指定的,在不同情况

下,该属性的值是不一样的,主要有一下3种情况:

1.

如果传入的是单参数且参数类型是一个List的时候,collection属性值为list

2.

如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array

3.

如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在breast里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.

我采用mybatis直接将数组当作参数传入总是出现错误,说找不到参数,也按照上述的条件一一尝试结果还是不行,我想可能出现这个问题的原因是mybatis的版本问题。后来采用传入一个实体,在实体里面定义数组的方法。然后 *** 作,这样就不出错了。此方法虽为下册,但也可以应付一些关键问题。

在对应的.xml中添加insert标签,换掉中间的insert语句

<insert id="addUser" parameterType="User"

useGeneratedKeys="true" keyProperty="id">

insert into user(userName,userAge,userAddress)

values(#{userName},#{userAge},#{userAddress})

</insert>

-- Oracle SEQUENCE 序列语法:

CREATE SEQUENCE 序列名 

[INCREMENT BY n] 

[START WITH n] 

[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] 

[{CYCLE|NOCYCLE}] 

[{CACHE n|NOCACHE}] 

示例:

CREATE SEQUENCE sq_test -- 序列名

INCREMENT BY 1  -- 每次加几个  

START WITH 1  -- 从1开始计数  

MAXVALUE 9999999   -- 最大值9999999  

NOCYCLE    -- 一直累加,不循环  

NOCACHE  

 

SELECT sq_test.NEXTVAL FROM DUAL

可以使用sequence的地方:  

-- 不包含子查询、snapshot、VIEW的 SELECT 语句  

-- INSERT语句的子查询中  

-- NSERT语句的VALUES中  

-- UPDATE 的 SET中    

可以看如下例子:  

INSERT INTO table_name VALUES (sq_test.nextval,  'CLERK',1200, SYSDATE)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/7996952.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存