当前位置: 首页 > news >正文

批量插入对比-mysql-oracle-sqlserver

单个插入mysql

//单个  根据有值就插入,无值不改动  
<insert id="insertOne" keyColumn="id" keyProperty="id"
            parameterType="com.test.log" useGeneratedKeys="true">
        insert into test_mysql_tab
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="log != null">log,</if>
            <if test="createTime != null">create_time,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id,jdbcType=BIGINT},</if>
            <if test="log != null">#{log,jdbcType=VARCHAR},</if>
            <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
        </trim>
    </insert>


// 批量

批量插入

mysql

    <insert id="insertListNew">
        insert into
        test_mysql_tab (c1,c2,c3)values
            <foreach collection="list" item="item" index="index" separator="," >
                (
                #{item.c1}, #{item.c2},#{item.c3},#{item.c3}
                )
            </foreach>
    </insert>

sqlServer

   <insert id="saveBatchManual">
INSERT INTO test_tab (ca1, ca2, ca3, ca4, ca5)
select
    <foreach collection="list" index="index" item="item">
    <if test="index != 0">
    union select
    </if>	#{item.ca1},#{item.ca2},#{item.ca3,jdbcType=TIMESTAMP},#{item.ca4},#{item.ca5}
    </foreach>
</insert>

Oracle

    <insert id="batchInsertOracleInfo" parameterType="com.test.ParamObj" >
        insert all
        <foreach collection="list" item="item" index="index">
            into test_oracle_tab(c1,c2,c3,c4) values (#{item.c1},#{item.c2},#{item.c3},#{item.c4})
        </foreach>
        select 1 from dual
    </insert>

 oracle另一种方式

批量插入注意定义别名,否则可能会提示不能明确定义的列

 <insert id="insertBatchOracle" parameterType="com.test.batch.TestParam">
insert into test_oracle_tab(id,name)
<foreach collection="list" item="i" separator="union all" open="select * from (" close=")">
	select #{i.id} id,#{i.name} name from dual
</foreach>
</insert>


<!-- 方法2 -->
 <insert id="insertBatchOracle" parameterType="com.test.batch.TestParam">
insert into test_oracle_tab(id,name)
<foreach collection="list" item="i" separator="union all">
	select #{i.id} id,#{i.name} name from dual
</foreach>
</insert>

相关文章:

  • Three.js 新前端学习
  • tauri-plugin-shell插件将_blank的a标签用浏览器打开了,,,解决办法
  • android为第三方提供部分系统接口
  • Linux 系统不同分类的操作命令区别
  • Windows系统编程(八)线程同步
  • 【gRPC】Java高性能远程调用之gRPC详解
  • 大语言模型中温度参数(Temperature)的核心原理
  • 大学至今的反思与总结
  • python-leetcode-零钱兑换 II
  • EasyRTC嵌入式视频通话SDK的跨平台适配,构建web浏览器、Linux、ARM、安卓等终端的低延迟音视频通信
  • 内核编程七:Linux 内核日志的级别
  • DeepSeek大模型深度解析:架构、技术与应用全景
  • SAP-ABAP:SAP第二代增强之隐式增强(Implicit Enhancements)和Enhancement Framework 的详细解析
  • 密码学(一)
  • 混合专家模型(MoE):高效处理复杂任务的智能架构,DeepSeek性能出色的秘诀
  • SpringCloud微服务开发工程细节
  • 1.15-16-17-18迭代器与生成器,函数,数据结构,模块
  • LeetCode 718.最长重复子数组(动态规划,Python)
  • DeepSeek学术写作全流程提示词
  • LLM自动金融量化-CFGPT
  • 英德宣布开发射程超2000公里导弹,以防务合作加强安全、促进经济
  • 证监会:2024年依法从严查办证券期货违法案件739件,作出处罚决定592件、同比增10%
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局:正核实
  • 前四个月人民币贷款增加10.06万亿元,4月末M2余额同比增长8%
  • 俄副外长:俄美两国将举行双边谈判
  • 习近平举行仪式欢迎巴西总统卢拉访华