mybatis 批量插入和where条件使用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.IPerformanceResultDao">
        <insert id="addOnlineResult" parameterType="java.util.List">
            BEGIN
            <foreach collection="list" item="item" index="index" separator=";">
                insert into pts_online_result values(
                    SEQ_PTS_ONLINE_RESULT.nextval,
                    #{item.app_name,jdbcType=VARCHAR},
                    #{item.app_trade,jdbcType=VARCHAR},
                    #{item.action_name,jdbcType=VARCHAR},
                    #{item.con_user,jdbcType=VARCHAR},
                    #{item.press_time,jdbcType=VARCHAR},
                    #{item.avg_time,jdbcType=VARCHAR},
                    #{item.tps,jdbcType=VARCHAR},
                    #{item.succ_action,jdbcType=VARCHAR},
                    #{item.fail_action,jdbcType=VARCHAR},
                    #{item.succ_rate,jdbcType=VARCHAR},
                    #{item.app_cpu_util,jdbcType=VARCHAR},
                    #{item.db_cpu_util,jdbcType=VARCHAR},
                    #{item.scenario_type,jdbcType=VARCHAR},
                    #{item.app_version,jdbcType=VARCHAR},
                    #{item.online_tester,jdbcType=VARCHAR},
                    #{item.online_developer,jdbcType=VARCHAR},
                    #{item.remark,jdbcType=VARCHAR},
                    sysdate,
                    sysdate
                )
            </foreach>
            ;end;
        </insert>
        
            <insert id="addBatchResult" parameterType="java.util.List">
            BEGIN
            <foreach collection="list" item="item" index="index" separator=";">
                insert into pts_batch_result values(
                    SEQ_PTS_BATCH_RESULT.nextval,
                    #{item.batch_app_name,jdbcType=VARCHAR},
                    #{item.batch_app_trade,jdbcType=VARCHAR},
                    #{item.perpare_data,jdbcType=VARCHAR},
                    #{item.total_cost,jdbcType=VARCHAR},
                    #{item.succ_record,jdbcType=VARCHAR},
                    #{item.fail_record,jdbcType=VARCHAR},
                    #{item.succ_rate,jdbcType=VARCHAR},
                    #{item.batch_app_cpu_util,jdbcType=VARCHAR},
                    #{item.batch_db_cpu_util,jdbcType=VARCHAR},
                    #{item.scenario_type,jdbcType=VARCHAR},
                    #{item.batch_app_version,jdbcType=VARCHAR},
                    #{item.batch_tester,jdbcType=VARCHAR},
                    #{item.batch_developer,jdbcType=VARCHAR},
                    #{item.remark,jdbcType=VARCHAR},
                    sysdate,
                    sysdate
                )
            </foreach>
            ;end;
        </insert>
        <select id="queryOnlineResultList" resultType="com.pts.model.PerformanceOnlineResultModel" >
            select t.RESULT_ID
                    ,t.APP_NAME
                    ,t.APP_TRADE
                    ,t.ACTION_NAME
                    ,t.CON_USER
                    ,t.PRESS_TIME
                    ,t.AVG_TIME
                    ,t.TPS
                    ,t.SUCC_ACTION
                    ,t.FAIL_ACTION
                    ,t.SUCC_RATE
                    ,t.APP_CPU_UTIL
                    ,t.DB_CPU_UTIL
                    ,t.SCENARIO_TYPE
                    ,t.APP_VERSION
                    ,t.ONLINE_TESTER
                    ,t.ONLINE_DEVELOPER
                    ,t.REMARK
                    ,to_char(t.CREATE_TIME, 'yyyy-mm-dd hh24:mi:ss')
                      ,to_char(t.UPDATE_TIME, 'yyyy-mm-dd hh24:mi:ss') 
                from ( select 
                   rownum rn ,p1.*
                   from 
                   (select * from pts.pts_online_result p order by p.result_id desc) p1
             <where>
                <if test="perResultModel.app_name != null and perResultModel.app_name != ''">
                    and p1.app_name like concat('%',concat(#{perResultModel.app_name,jdbcType=VARCHAR},'%'))
                </if> 
                <if test="perResultModel.scenario_type != null and perResultModel.scenario_type != ''">
                    and p1.scenario_type like concat('%',concat(#{perResultModel.scenario_type,jdbcType=VARCHAR},'%'))
                </if>        
                 <if test="perResultModel.app_trade != null and perResultModel.app_trade != ''">
                    and p1.app_trade like concat('%',concat(#{perResultModel.app_trade,jdbcType=VARCHAR},'%'))
                </if>
                <if test="perResultModel.online_tester != null and perResultModel.online_tester != ''">
                    and p1.online_tester like concat('%',concat(#{perResultModel.online_tester,jdbcType=VARCHAR},'%'))
                </if>
                <if test="perResultModel.action_name != null and perResultModel.action_name != ''">
                    and p1.action_name like concat('%',concat(#{perResultModel.action_name,jdbcType=VARCHAR},'%'))
                </if>
                <if test="perResultModel.app_version != null and perResultModel.app_version != ''">
                    and p1.app_version like concat('%',concat(#{perResultModel.app_version,jdbcType=VARCHAR},'%'))
                </if>
             </where> 
             ) t 
         where t.rn &lt;= #{rows,jdbcType=NUMERIC}
               and t.rn &gt; #{start,jdbcType=NUMERIC}
         order by result_id desc
        </select>
        <select id="queryOnlineResultCount" resultType="java.lang.Integer" >
            select count(*)
             from (select * from pts.pts_online_result p order by p.result_id desc) p1
             <where>
                <if test="perResultModel.app_name != null and perResultModel.app_name != ''">
                    and p1.app_name like concat('%',concat(#{perResultModel.app_name,jdbcType=VARCHAR},'%'))
                </if> 
                <if test="perResultModel.scenario_type != null and perResultModel.scenario_type != ''">
                    and p1.scenario_type like concat('%',concat(#{perResultModel.scenario_type,jdbcType=VARCHAR},'%'))
                </if>        
                 <if test="perResultModel.app_trade != null and perResultModel.app_trade != ''">
                    and p1.app_trade like concat('%',concat(#{perResultModel.app_trade,jdbcType=VARCHAR},'%'))
                </if>
                <if test="perResultModel.online_tester != null and perResultModel.online_tester != ''">
                    and p1.online_tester like concat('%',concat(#{perResultModel.online_tester,jdbcType=VARCHAR},'%'))
                </if>
                <if test="perResultModel.action_name != null and perResultModel.action_name != ''">
                    and p1.action_name like concat('%',concat(#{perResultModel.action_name,jdbcType=VARCHAR},'%'))
                </if>
                <if test="perResultModel.app_version != null and perResultModel.app_version != ''">
                    and p1.app_version like concat('%',concat(#{perResultModel.app_version,jdbcType=VARCHAR},'%'))
                </if>
             </where> 
        </select>
        <select id="queryOnlineResultDetail" resultType="com.pts.model.PerformanceOnlineResultModel">
            select * from pts.pts_online_result p 
                where p.result_id=#{result_id,jdbcType=NUMERIC}
        </select>
        <delete id="delOneOnlineResult">
            delete from pts.pts_online_result p 
                where p.result_id=#{result_id,jdbcType=NUMERIC}            
        </delete>
        <update id="editOnlineResultDetail">
            update pts.pts_online_result p 
                set P.APP_NAME=#{porModel.app_name,jdbcType=VARCHAR}
                    ,P.APP_TRADE=#{porModel.app_trade,jdbcType=VARCHAR}
                    ,P.ACTION_NAME=#{porModel.action_name,jdbcType=VARCHAR}
                    ,P.CON_USER=#{porModel.con_user,jdbcType=VARCHAR}
                    ,P.PRESS_TIME=#{porModel.press_time,jdbcType=VARCHAR}
                    ,P.AVG_TIME=#{porModel.avg_time,jdbcType=VARCHAR}
                    ,P.TPS=#{porModel.tps,jdbcType=VARCHAR}
                    ,P.SUCC_ACTION=#{porModel.succ_action,jdbcType=VARCHAR}
                    ,P.FAIL_ACTION=#{porModel.fail_action,jdbcType=VARCHAR}
                    ,P.SUCC_RATE=#{porModel.succ_rate,jdbcType=VARCHAR}
                    ,P.APP_CPU_UTIL=#{porModel.app_cpu_util,jdbcType=VARCHAR}
                    ,P.DB_CPU_UTIL=#{porModel.db_cpu_util,jdbcType=VARCHAR}
                    ,P.SCENARIO_TYPE=#{porModel.scenario_type,jdbcType=VARCHAR}
                    ,P.APP_VERSION=#{porModel.app_version,jdbcType=VARCHAR}
                    ,P.ONLINE_TESTER=#{porModel.online_tester,jdbcType=VARCHAR}
                    ,P.ONLINE_DEVELOPER=#{porModel.online_developer,jdbcType=VARCHAR}
                    ,P.REMARK=#{porModel.remark,jdbcType=VARCHAR}
                    ,P.UPDATE_TIME=sysdate
                where p.result_id=#{result_id,jdbcType=NUMERIC}
        </update>
        <select id="queryBatchResultList" resultType="com.pts.model.PerformanceBatchResultModel">
            select 
                t.BATCH_RESULT_ID
                ,t.BATCH_APP_NAME
                ,t.BATCH_APP_TRADE
                ,t.PERPARE_DATA
                ,t.TOTAL_COST
                ,t.SUCC_RECORD
                ,t.FAIL_RECORD
                ,t.SUCC_RATE
                ,t.BATCH_APP_CPU_UTIL
                ,t.BATCH_DB_CPU_UTIL
                ,t.SCENARIO_TYPE
                ,t.BATCH_APP_VERSION
                ,t.BATCH_TESTER
                ,t.BATCH_DEVELOPER
                ,t.REMARK
                ,to_char(t.CREATE_TIME, 'yyyy-mm-dd hh24:mi:ss')
                  ,to_char(t.UPDATE_TIME, 'yyyy-mm-dd hh24:mi:ss')
             from ( 
                select rownum rn , p1.*from 
                (select * from pts.pts_batch_result p order by p.batch_result_id desc) p1
                 <where>
                    <if test="perResultModel.batch_app_name != null and perResultModel.batch_app_name != ''">
                        and p1.batch_app_name like concat('%',concat(#{perResultModel.batch_app_name,jdbcType=VARCHAR},'%'))
                    </if>             
                     <if test="perResultModel.batch_app_trade != null and perResultModel.batch_app_trade != ''">
                        and p1.batch_app_trade like concat('%',concat(#{perResultModel.batch_app_trade,jdbcType=VARCHAR},'%'))
                    </if>
                    <if test="perResultModel.batch_tester != null and perResultModel.batch_tester != ''">
                        and p1.batch_batch_tester like concat('%',concat(#{perResultModel.batch_batch_tester,jdbcType=VARCHAR},'%'))
                    </if>
                    <if test="perResultModel.batch_app_version != null and perResultModel.batch_app_version != ''">
                    and p1.batch_app_version like concat('%',concat(#{perResultModel.batch_app_version,jdbcType=VARCHAR},'%'))
                    </if>
                 </where>
              ) t
            where t.rn &lt;=#{rows,jdbcType=NUMERIC}
                  and t.rn &gt;#{start,jdbcType=NUMERIC}
            order by batch_result_id desc
        </select>
        <select id="queryBatchResultCount" resultType="java.lang.Integer" >
            select count(*)
             from (select * from pts.pts_batch_result p order by p.batch_result_id desc) p1
             <where>
                    <if test="perResultModel.batch_app_name != null and perResultModel.batch_app_name != ''">
                        and p1.batch_app_name like concat('%',concat(#{perResultModel.batch_app_name,jdbcType=VARCHAR},'%'))
                    </if>             
                     <if test="perResultModel.batch_app_trade != null and perResultModel.batch_app_trade != ''">
                        and p1.batch_app_trade like concat('%',concat(#{perResultModel.batch_app_trade,jdbcType=VARCHAR},'%'))
                    </if>
                    <if test="perResultModel.batch_tester != null and perResultModel.batch_tester != ''">
                        and p1.batch_tester like concat('%',concat(#{perResultModel.batch_tester,jdbcType=VARCHAR},'%'))
                    </if>
                    <if test="perResultModel.batch_app_version != null and perResultModel.batch_app_version != ''">
                    and p1.batch_app_version like concat('%',concat(#{perResultModel.batch_app_version,jdbcType=VARCHAR},'%'))
                    </if>
                 </where>
        </select>
        <select id="queryBatchResultDetail" resultType="com.pts.model.PerformanceBatchResultModel">
            select * from pts.pts_batch_result p 
                where p.batch_result_id=#{batch_result_id,jdbcType=NUMERIC}
        </select>
        <delete id="delOneBatchResult">
            delete from pts.pts_batch_result p 
                where p.batch_result_id=#{batch_result_id,jdbcType=NUMERIC}            
        </delete>
        <update id="editBatchResultDetail">
            update pts.pts_batch_result p 
                set p.BATCH_APP_NAME=#{pbrModel.batch_app_name,jdbcType=VARCHAR}
                    ,p.BATCH_APP_TRADE=#{pbrModel.batch_app_trade,jdbcType=VARCHAR}
                    ,p.PERPARE_DATA=#{pbrModel.perpare_data,jdbcType=VARCHAR}
                    ,p.TOTAL_COST=#{pbrModel.total_cost,jdbcType=VARCHAR}
                    ,p.SUCC_RECORD=#{pbrModel.succ_record,jdbcType=VARCHAR}
                    ,p.FAIL_RECORD=#{pbrModel.fail_record,jdbcType=VARCHAR}
                    ,p.SUCC_RATE=#{pbrModel.succ_rate,jdbcType=VARCHAR}
                    ,p.BATCH_APP_CPU_UTIL=#{pbrModel.batch_app_cpu_util,jdbcType=VARCHAR}
                    ,p.BATCH_DB_CPU_UTIL=#{pbrModel.batch_db_cpu_util,jdbcType=VARCHAR}
                    ,p.SCENARIO_TYPE=#{pbrModel.scenario_type,jdbcType=VARCHAR}
                    ,p.BATCH_APP_VERSION=#{pbrModel.batch_app_version,jdbcType=VARCHAR}
                    ,p.BATCH_TESTER=#{pbrModel.batch_tester,jdbcType=VARCHAR}
                    ,p.BATCH_DEVELOPER=#{pbrModel.batch_developer,jdbcType=VARCHAR}
                    ,p.REMARK=#{pbrModel.remark,jdbcType=VARCHAR}
                    ,p.UPDATE_TIME=sysdate 
                where p.batch_result_id=#{batch_result_id,jdbcType=NUMERIC}
        </update>
</mapper>

 

posted on 2016-09-18 17:50  anruy  阅读(3921)  评论(0编辑  收藏  举报

导航