mybatis批量写法

批量更新

<update id="updPartsStatus" parameterType="com.autosys.parts.model.BesiParts">
        <foreach collection="besiParts.partIdsList" item="item" index="index" open="begin" close=";end;" separator=";">
            UPDATE TM_BESI_PART
            <set>
                STATUS = #{besiParts.status}
            </set>
            <where>
                ID = #{item}
            </where>
        </foreach>
    </update>

批量添加

<insert id="instBesiparts" parameterType="map">
        INSERT INTO TM_BESI_PART
        (
        ID,
        PART_NO,
        MODEL_CODE,
        PART_NAME,
        PART_NAME_EN,
        PART_TYPE,
        POWER_FLAG,
        PURCASING_CODE,
        REG_PLANT,
        USE_PLANT,
        PRODUCE_CODE,
        PLANT_CODE,
        NEW_FLAG,
        STATUS,
        CREATE_BY,
        CREATE_TIME,
        UPDATE_BY,
        UPDATE_TIME
        )
        <foreach collection="partsList" item="item" index="index" separator="UNION ALL">
            SELECT
            #{item.id, jdbcType=VARCHAR},
            #{item.partNo, jdbcType=VARCHAR},
            #{item.modelCode, jdbcType=VARCHAR},
            #{item.partName, jdbcType=VARCHAR},
            #{item.partNameNn, jdbcType=VARCHAR},
            #{item.partType, jdbcType=VARCHAR},
            #{item.powerFlag, jdbcType=VARCHAR},
            #{item.purcasingCode, jdbcType=VARCHAR},
            #{item.regPlant, jdbcType=VARCHAR},
            #{item.usePlant, jdbcType=VARCHAR},
            #{item.produceCode, jdbcType=VARCHAR},
            #{item.plantCode, jdbcType=VARCHAR},
            #{item.newFlag, jdbcType=VARCHAR},
            #{item.status, jdbcType=VARCHAR},
            #{item.createBy, jdbcType=VARCHAR},
            #{item.createTime, jdbcType=VARCHAR},
            #{item.updateBy, jdbcType=VARCHAR},
            #{item.updateTime, jdbcType=VARCHAR}
            FROM DUAL
        </foreach>
    </insert>

批量Merge

<insert id="instEmParts" parameterType="com.autosys.parts.model.EmParts">
        MERGE INTO TR_PART_EMER T1 USING (
        <foreach collection="emList" item="emParts" index="index" separator="UNION ALL">
            SELECT
            #{emParts.id} as ID,
            #{emParts.partCode} as PART_CODE,
            #{emParts.model} as MODEL,
            #{emParts.userId} as USER_ID,
            #{emParts.createBy} as CREATE_BY,
            sysdate as CREATE_TIME,
            #{emParts.updateBy} as UPDATE_BY,
            sysdate as UPDATE_TIME,
            #{emParts.partId} as PART_ID
            FROM
            dual
        </foreach>
        )
        T2 ON (
        T1.PART_ID = T2.PART_ID)
        WHEN MATCHED THEN
        UPDATE SET T1.USER_ID = T2.USER_ID, T1.UPDATE_TIME = T2.UPDATE_TIME, UPDATE_BY = T2.UPDATE_BY WHERE T1.PART_ID = T2.PART_ID
        WHEN NOT MATCHED THEN
        INSERT (
        ID,
        PART_CODE,
        MODEL,
        USER_ID,
        CREATE_BY,
        CREATE_TIME,
        PART_ID
        )
        VALUES
        (
        T2.ID,
        T2.PART_CODE,
        T2.MODEL,
        T2.USER_ID,
        T2.CREATE_BY,
        T2.CREATE_TIME,
        T2.PART_ID
        )
    </insert>

原文地址:https://www.cnblogs.com/xiaofengfree/p/12155898.html

时间: 2024-07-29 10:33:37

mybatis批量写法的相关文章

mybatis批量删除,亲测可用

以前看了理论以为很容易就可以实现批量删除,谁知道自己写了才发现错误百出!百度mybatis批量删除,列出来的我没一个跑的通的(不排除是我自己的原因) 下面这种写法我自己测试是通过的! mybatis配置什么的这里不多提了,不懂也不会看到这个知识点 首先是mapper: <delete id="delStu" parameterType="java.util.List"> DELETE FROM STUDENT WHERE stuId IN <for

【转】mybatis Mybatis批量插入Oracle、MySQL

要做批量插入数据库,首先得知道该数据库对批量插入所支持的语法.每个数据库批量插入的语法都不一样,我介绍两种.MySQL:1.INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三'),(2,'李四')              2.INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三');INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,'李四')Oracle:1.INSERT INTO TABLE_

Mybatis批量删除之Error code 1064, SQL state 42000;

(一)小小的一次记载. (二):最近的项目都是使用MyBatis,批量新增自己都会写了,但是一次批量删除可把我给折腾了下,写法网上都有,但是照着做就是不行,最后问公司的人,问网友才得到答案,那就是jdbc中需要在url中指定允许进行进行多条语句同时执行. 自己在写批量更新的时候也把相应的语句打印出来了的,复制出来执行是没问题,但是用junit测试的时候一直报错如下 Error code 1064, SQL state 42000: You have an error in your SQL sy

mybatis批量问题

格言:好记性不如烂笔头 最近用到mybatis 批量插入和查询操作,现在把配置文件批量操作部分记录如下,为了日后查阅: <select id="selectByIds" parameterType="long"        resultMap="TrackingMessageinfoDOResultMap">        select        <include refid="MybatisTrackingMe

那些年我们爬过的山 - mybatis批量导入

写这篇文章之前想着给这篇博客起一个文艺一点的标题,思来想去,想到了那些年我们爬过的山,或者我们一起趟过的河?代码不规范,同事两行泪,这是多么痛的领悟啊! 背景 本组一名实习生,由于学校有事情需要回去处理,我便将他的代码接管过来,正好赶上本次迭代上线,需要将同事的代码提交测试,如果被测试出来有bug,我就来负责bug修复,代码优化等.由于不同的开发人员都有自己的编程习惯,所以不同人员所写的代码多少都会有些差异,比如:变量的命名.代码的格式等,即使组内有一套开发规范也还是会出现一些差异,这就是所谓的

Mybatis批量Insert及水平分表

首先是Mybatis批量insert 说一下核心部分,整个工程参考我的github,运行的main方法在org/xiongmaotailang/mybatis/batchinsert/DbUtil.java中,涉及到的脚本是sql.txt 需要的数据表示例,包括4个字段. CREATE TABLE `newspvuv` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `pv` bigint(11) DEFAULT NULL,   `uv`

MyBatis批量插入数据(MySql)

由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,应该要比循环插入的效果更好,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来.供以后查阅和学习. java代码: 注意:这里循环的时候需new 出来新的对象,而不能通过循环改变属性的值就认为这是一个新的对象了,通俗的说就是new ReddemCode()要放在for循环的里面.

Mybatis批量更新数据

Mybatis批量更新数据 第一种方式 [html] view plain copy print? <update id="updateBatch" parameterType="Map"> update aa   set a=#{fptm}, b=#{csoftrain} where c in <foreach collection="cs" index="index" item="item&qu

myBatis批量添加,修改和删除

摘自: http://blog.csdn.net/myjlvzlp/article/details/8434376 1.批量添加元素session.insert(String string,Object o) public void batchInsertStudent(){ List<Student> ls = new ArrayList<Student>(); for(int i = 5;i < 8;i++){ Student student = new Student(