1. Mysql 的批量插入方式:
<insert id="insertDataByBatch">
insert into RECORD_IMFORMATION
(recordId,toUserId,roomName,fromUserId,entityType,
entityContent,url)
values
<foreach collection="records" item="record" separator="," >
(#{record.recordId},#{record.toUserId},#{record.roomName},
#{record.fromUserId},#{record.entityType},
#{record.entityContent},#{record.url})
</foreach>
</insert>
2. Oracle的批量插入方式:
<insert id="insertDataByBatch">
insert into RECORD_IMFORMATION
(recordId,toUserId,roomName,fromUserId,entityType,
entityContent,url)
SELECT A.* FROM (
<foreach collection="records" item="record" index="index" separator="UNION ALL" >
SELECT
#{record.recordId, jdbcType=VARCHAR} recordId,
#{record.toUserId, jdbcType=VARCHAR} toUserId,
#{record.roomName, jdbcType=VARCHAR} roomName,
#{record.fromUserId, jdbcType=VARCHAR} fromUserId,
#{record.entityType, jdbcType=VARCHAR} entityType,
#{record.entityContent, jdbcType=VARCHAR} entityContent,
#{record.url, jdbcType=VARCHAR} url
FROM dual
</foreach>
) A
</insert>
3. 动态插入Mysql不同的表:
<insert id="insertData" statementType="STATEMENT">
insert into ${tableName}
(${fields})
values(${values})
</insert>
附:
1. 需要Mybatis调用Sqlserver存储过程的话,可以参考: