1.MYSQL建T_BAS_PRE_MODEL_TIME表:
DROP TABLE IF EXISTS `T_BAS_PRE_MODEL_TIME`;
CREATE TABLE `T_BAS_PRE_MODEL_TIME` (
`TIMEID` int not null AUTO_INCREMENT COMMENT '主键编号',
`MODELID` int NOT NULL COMMENT '模型编号',
`STARTDATE` DATETIME COMMENT '开始时间',
`ENDDATE` DATETIME COMMENT '结束时间',
PRIMARY KEY (`TIMEID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='模型训练数据时间表';
2.mysql和sqlserver批量插入类似
<!-- 模型训练数据筛选时间新增-->
<insert id="insert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="timeId">
insert into T_BAS_PRE_MODEL_TIME(
MODELID,
STARTDATE,
ENDDATE
)values
<foreach collection="list" item="modTime" index="index" separator=",">
(#{modTime.modelId,jdbcType=INTEGER},
#{modTime.startDate,jdbcType=TIMESTAMP},
#{modTime.endDate,jdbcType=TIMESTAMP})
</foreach>
</insert>
3.oracle批量稍有差异:
<insert id="insert" parameterType="java.util.List" useGeneratedKeys="false" flushCache="false">
insert into T_BAS_PRE_MODEL_TIME(
TIMEID,
MODELID,
STARTDATE,
ENDDATE
)
SELECT SEQ_T_BAS_PRE_MODEL_TIME.NEXTVAL as timeId,
A.*
from(
<foreach collection="list" item="modTime" index="index" separator="UNION ALL">
SELECT
#{modTime.modelId,jdbcType=INTEGER},
TO_DATE(#{modTime.startDate},'YYYY-MM-DD HH24:MI:SS'),
TO_DATE(#{modTime.endDate},'YYYY-MM-DD HH24:MI:SS')
FROM DUAL
</foreach>
)A
</insert>
4.说明:
(1)useGeneratedKeys=“true” keyProperty=“timeId” 使用自增长键,适用于mysql和sqlserver库。
(2)要使用自增长键,建表语句mysql在对应建表语句对应字段上加AUTO_INCREMENT;sqlserver则是加IDENTITY(1,1)
(3)useGeneratedKeys=“false” flushCache=“false” 不使用自增长键,oracle配合mybatis批量运用序列生成键值要加上此标记。**