mybatis获取一个list怎么添加到数据库里

mybatis获取一个list怎么添加到数据库里,第1张

思路为采用Oracle 中insert语句的高级用法:INSERT ALL ,批量插入数据

INSERT ALL举例:

1、建测试表

CREATE TABLE EDW_INT   

(   

  AGMT_NO         VARCHAR2(40 BYTE)             NOT NULL,   

  AGMT_SUB_NO     VARCHAR2(4 BYTE)              NOT NULL,   

  NEED_REPAY_INT  NUMBER(22,2),   

  CURR_PERIOD     NUMBER(4)                     NOT NULL   

);   

CREATE TABLE EDW_INT_1   

(   

  AGMT_NO         VARCHAR2(40 BYTE)             NOT NULL,   

  AGMT_SUB_NO     VARCHAR2(4 BYTE)              NOT NULL,   

  NEED_REPAY_INT  NUMBER(22,2),   

  CURR_PERIOD     NUMBER(4)                     NOT NULL   

);   

CREATE TABLE EDW_INT_2   

(   

  AGMT_NO         VARCHAR2(40 BYTE)             NOT NULL,   

  AGMT_SUB_NO     VARCHAR2(4 BYTE)              NOT NULL,   

  NEED_REPAY_INT  NUMBER(22,2),   

  CURR_PERIOD     NUMBER(4)                     NOT NULL   

);

2插入测试数据

INSERT INTO EDW_INT  

  (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)  

VALUES  

  ('20003874', '2104', 31265, 7);  

INSERT INTO EDW_INT  

  (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)  

VALUES  

  ('20003874', '2104', 329076, 6);  

INSERT INTO EDW_INT  

  (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)  

VALUES  

  ('20003874', '2104', 345406, 5);  

INSERT INTO EDW_INT  

  (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)  

VALUES  

  ('20003874', '2104', 361641, 4);  

INSERT INTO EDW_INT  

  (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)  

VALUES  

  ('20017143', '2104', 235086, 0);  

INSERT INTO EDW_INT  

  (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)  

VALUES  

  ('20017143', '2104', 356655, 0);  

INSERT INTO EDW_INT  

  (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)  

VALUES  

  ('20018273', '2104', 163946, 0);  

INSERT INTO EDW_INT  

  (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)  

VALUES  

  ('20018273', '2104', 208049, 0);  

COMMIT;

3insert all-不带条件

insert all  

into edw_int_1(agmt_no,agmt_sub_no,need_repay_int,curr_period)  

values(agmt_no,agmt_sub_no,need_repay_int,curr_period)  

into edw_int_2(agmt_no,agmt_sub_no,curr_period)  

values(agmt_no,'1234',curr_period)  

select agmt_no,agmt_sub_no,need_repay_int,curr_period from edw_int;  

commit;

结合该问题具体分析:

mybatis 的和dao相关的sql写法如下:

<insert id="batchSave">

INSERT ALL

<foreach collection="list" item="item">

INTO FSP_BUSINESS_INTEREST_REPORT

(

ID,

BUSINESS_DAY,

LOAN_NO,

CIF_NO,

CIF_NAME,

LOAN_TYPE,

REPAY_WAY,

TERM_TYPE,

VOUCH_WAY,

CHANNEL_TYPE,

LOAN_BEGIN_DATE,

LOAN_END_DATE,

RATE_BEGIN_DATE,

RATE_END_DATE,

AMT,

RATE_TYPE,

RATE,

RATE_AMT,

PAY_TYPE,

REPORT_OUT_FLAG,

REPORT_OUT_DATE,

REPORT_OUT_AMT,

CREATOR,

CREATE_TIME,

UPDATOR,

UPDATE_TIME

    ) VALUES (

getSeqByName('SEQ_FSP_BUS_INT_REPORT'),

#{businessDay, jdbcType=VARCHAR},

#{loanNo, jdbcType=VARCHAR},

#{cifNo, jdbcType=VARCHAR},

#{cifName, jdbcType=VARCHAR},

#{loanType, jdbcType=VARCHAR},

#{repayWay, jdbcType=VARCHAR},

#{termType, jdbcType=VARCHAR},

#{vouchWay, jdbcType=VARCHAR},

#{channelType, jdbcType=VARCHAR},

#{loanBeginDate, jdbcType=DATE},

#{loanEndDate, jdbcType=DATE},

#{rateBeginDate, jdbcType=DATE},

#{rateEndDate, jdbcType=DATE},

#{amt, jdbcType=NUMERIC},

#{rateType, jdbcType=VARCHAR},

#{rate, jdbcType=NUMERIC},

#{rateAmt, jdbcType=NUMERIC},

#{payType, jdbcType=VARCHAR},

#{reportOutFlag, jdbcType=VARCHAR},

#{reportOutDate, jdbcType=DATE},

#{reportOutAmt, jdbcType=NUMERIC},

#{creator, jdbcType=VARCHAR},

#{createTime, jdbcType=DATE},

#{updator, jdbcType=VARCHAR},

#{updateTime, jdbcType=DATE}

    )

    </foreach>

SELECT 1 FROM DUAL

</insert>

2dao中接口如下定义:

void batchSave(@Param("list") List<BusinessInterestReport> list);

空间在初始建立的时候最好设置成自动扩展的,如果没有设置成扩展的,则有四种方法可以增加表空间的大小,其中增加数据文件是经常用的一种。四种方法如下:

Meathod1:给表空间增加数据文件

ALTER TABLESPACE app_data ADD DATAFILE

'D:\ORACLE\PRODUCT\1020\ORADATA\EDWTEST\APP03DBF' SIZE 50M;

Meathod2:新增数据文件,并且允许数据文件自动增长

ALTER TABLESPACE app_data ADD DATAFILE

'D:\ORACLE\PRODUCT\1020\ORADATA\EDWTEST\APP04DBF' SIZE 50M

AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

Meathod3:允许已存在的数据文件自动增长

ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\1020\ORADATA\EDWTEST\APP03DBF'

AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

Meathod4:手工改变已存在数据文件的大小

ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\1020\ORADATA\EDWTEST\APP02DBF'

RESIZE 100M;

1、你导出的dmp中的某些表空间就很大,121M只是数据的大小,不含表空间;

2、删除表空间和用户后windows再删除实体文件,linux先offline数据文件,drop,重启数据库就好了

以上就是关于mybatis获取一个list怎么添加到数据库里全部的内容,包括:mybatis获取一个list怎么添加到数据库里、在Oracle数据库中,如何增加表空间的大小、Oracle 数据库问题: 1、DMP导入表空间后增长100倍左右; 2、Oracle自动释放硬盘空间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9326345.html

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

发表评论

登录后才能评论

评论列表(0条)

保存