MyBatis 3 批量插入多条数据

来源:互联网 发布:大数据图表生成工具 编辑:程序博客网 时间:2024/06/05 00:52
在实际的开发,当我们需要插入多条数据时,大家很多是通过在程序中循环调用添加接口。
这种方式完全可以实现,只是在性能上有很大的损失;

可以通过下面这种方式:
   针对PostgreSQL 9.0数据库
<insert id="addNormalPlan" parameterType="list" > <selectKey keyProperty="id" resultType="int" order="BEFORE">             select max(id)+1 from TBL_NORMAL_PLAN </selectKey> <![CDATA[ INSERT INTO TBL_NORMAL_PLAN( id, plan_type, week_type, start_time,end_time) VALUES ]]>     <foreach collection="list" item="item" index="index"          separator=",">          <![CDATA[ (#{id}, #{item.planType}, #{item.weekType},          #{item.startTime}, #{item.endTime} ) ]]>     </foreach> </insert> 

list:是个对象集合,id:这里不是主键,取的最大值,可以换成主键。
这个foreach其实就是组织成insert into values(多行的值)
 
 
    针对oracle的批量添加:
<insert id="addHomeworkListInfo" parameterType="list">        INSERT INTO homework_list        (homework_list_id,        homework_id,        count,        type,        content) SELECT SEQ_HOMEWORK_LIST_ID.NEXTVAL, A.* FROM(        <foreach collection="homeworkListInfo" item="item" index="index"            separator="union all">            SELECT            #{item.homeworkId},            #{item.count},            #{item.type},            #{item.content}            FROM dual        </foreach>        ) A    </insert>

原创粉丝点击