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 <= #{rows,jdbcType=NUMERIC} and t.rn > #{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 <=#{rows,jdbcType=NUMERIC} and t.rn >#{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>