mybatis批量处理

 

1.list数据批量插入

int insertPaperDetailBatch(List<Map<String, Object>> paperList);
  <insert id="insertPaperDetailBatch">
        insert into T_PAPERDETAIL
        (SBJ_CODE,INDI_CODE,PAPER_ID,SCORE)
        <foreach close=")" collection="list" item="item" index="index"
                 open="(" separator="union">
            select
            #{item.sbjCode},
            #{item.indiCode},
            #{item.paperId},
            #{item.score}

            from dual
        </foreach>
    </insert>

2.根据现有表数据判断是插入数据还是更新数据

<insert id="insertExamEEBatchMergeNotSelf">
        merge into T_EXAMINEE e
        using
        (select
        distinct(EXA_CODE) as EXA_CODE,
        PLAN_CODE,
        EXA_DEPT_CODE,
        EXA_DUTY_CODE,
        GROUP_ID,
        SCORE_STATE
        from T_EXAMREL_WK) t
        on (e.PLAN_CODE = t.PLAN_CODE and e.EXA_CODE =t.EXA_CODE and e.isself is null)
        when not matched then
        insert
        (
        EXA_ID,
        PLAN_CODE,
        EXA_CODE,
        EXA_DEPT_CODE,
        EXA_DUTY_CODE,
        GROUP_ID,
        SCORE_STATE
        )
        values
        (
        'EA'||SEQ_EXA_ID.NEXTVAL,
        t.PLAN_CODE,
        t.EXA_CODE,
        t.EXA_DEPT_CODE,
        t.EXA_DUTY_CODE,
        t.GROUP_ID,
        t.SCORE_STATE

        )
        when matched then
        update
        set
        EXA_DEPT_CODE =t.EXA_DEPT_CODE,
        EXA_DUTY_CODE = t.EXA_DUTY_CODE,
        GROUP_ID = t.GROUP_ID,
        SCORE_STATE = t.SCORE_STATE

    </insert>

3.根据list数据判断进行merge操作

int insertPlugrelBatch(List<Map<String,Object>> plugrelList);
<insert id="insertPlugrelBatch">
        <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
            merge into T_PLUG t
            using
            (select #{item.key1} as planCode,
            #{item.key2} as empeCode,
            #{item.key6} as officeCode,
            #{item.key4} as deptCode
            from dual) u
            on (t.PLAN_CODE = u.planCode and
            t.EMPE_CODE = u.empeCode and
            t.DEPT_CODE = u.deptCode
            )
            when not matched then
            insert
            (PLAN_CODE,
            EMPE_CODE,
            EMPE_NAME,
            DEPT_CODE,
            DEPT_NAME,
            OFFICE_CODE,
            OFFICE_NAME)
            values
            (#{item.key1},
            #{item.key2},
            #{item.key3},
            #{item.key4},
            #{item.key5},
            #{item.key6},
            #{item.key7}
            )
            when matched then
            update
            set
            EMPE_NAME = #{item.key3},
            DEPT_NAME = #{item.key5},
            OFFICE_NAME = #{item.key7}

        </foreach>
    </insert>

4.查询数据存放map中,避免创建对象,实际返回对象也是将对应结果放入对象变量中

List<Map<String, Object>> selectEx();
 <select id="selectEx" resultType="java.util.HashMap">
        SELECT
        PLAN_CODE,
        EVA_CODE,
        EXA_CODE
        FROM T_EX
    </select>

 

posted @ 2017-12-19 19:41  W&L  阅读(578)  评论(0编辑  收藏  举报