MapperScheduler.xml

<?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.paic.dbaudit.dao.prd.MapperScheduler">

    <select id="getNextTriggerSEQ" resultType="int">
        select DA_QRTZ_SCHEDULER_SEQ.NEXTVAL from dual
    </select>

    <select id="getAllTriggers" resultType="com.paic.dbaudit.bean.table.DA_QRTZ_SCHEDULER">
        select s.job_name,
               s.trigger_id,
               s.trigger_type,
               s.trigger_expression,
               s.created_by,
               s.created_date,
               s.updated_by,
               s.updated_date,
               ll.start_time as last_execute_time,
               ll.job_result
          from da_qrtz_scheduler s,
               (select l.trigger_id,
                       l.start_time,
                       l.job_result,
                       rank() over(partition by l.trigger_id order by l.start_time desc) as rank
                  from da_qrtz_log l) ll
         where s.trigger_id = ll.trigger_id(+)
           and (ll.rank = 1 or ll.rank is null)
      order by s.job_name desc, s.trigger_id asc
    </select>

    <select id="getTriggerByTriggerId" resultType="com.paic.dbaudit.bean.table.DA_QRTZ_SCHEDULER">
        select job_name,
               trigger_id,
               trigger_type,
               trigger_expression,
               created_by,
               created_date,
               updated_by,
               updated_date
          from da_qrtz_scheduler
         where trigger_id = #{trigger_ide, jdbcType = VARCHAR}
    </select>

    <select id="getTriggersByJobName" resultType="com.paic.dbaudit.bean.table.DA_QRTZ_SCHEDULER">
            select s.job_name,
               s.trigger_id,
               s.trigger_type,
               s.trigger_expression,
               s.created_by,
               s.created_date,
               s.updated_by,
               s.updated_date,
               ll.start_time as last_execute_time,
               ll.job_result,
               ll.seconds_costed
          from da_qrtz_scheduler s,
               (select l.trigger_id,
                       l.start_time,
                       l.seconds_costed,
                       l.job_result,
                       rank() over(partition by l.trigger_id order by l.start_time desc) as rank
                  from da_qrtz_log l
                 where job_name = #{job_name, jdbcType = VARCHAR}) ll
         where s.trigger_id = ll.trigger_id(+)
           and s.job_name = #{job_name, jdbcType = VARCHAR}
           and (ll.rank = 1 or ll.rank is null)
         order by s.created_date desc, s.trigger_type desc
    </select>

    <select id="getLogs" resultType="com.paic.dbaudit.bean.table.DA_QRTZ_LOG">
            select *
              from (select t.*, rownum rn
                      from (
                        select l.log_id,
                               l.job_name,
                               l.trigger_id,
                               s.trigger_expression,
                               l.start_time,
                               l.end_time,
                               l.seconds_costed,
                               l.job_result,
                               l.created_by,
                               l.created_date
                          from DA_QRTZ_LOG l, da_qrtz_scheduler s
                         where l.job_name = #{job_name, jdbcType = VARCHAR}
                           and l.trigger_id = s.trigger_id(+)
                      <if test="trigger_id != null and trigger_id != ''">
                           and l.trigger_id = #{trigger_id,jdbcType=VARCHAR}
                      </if>
                      <if test="job_result != null and job_result != ''">
                           and l.job_result = #{job_result,jdbcType=VARCHAR}
                      </if>
                      <if test="beginTime != null and beginTime != ''">
                          <![CDATA[
                           and start_time >= to_date(#{beginTime, jdbcType = VARCHAR}, 'yyyymmddHH24:MI:SS')
                          ]]> 
                      </if>
                      <if test="endTime != null and endTime != ''">
                          <![CDATA[
                           and start_time < to_date(#{endTime, jdbcType = VARCHAR}, 'yyyymmddHH24:MI:SS')
                          ]]> 
                      </if>
                         order by l.created_date desc
                      ) t
            <![CDATA[
                     where rownum <= #{endRow, jdbcType = VARCHAR})
             where rn >= #{startRow, jdbcType = NUMERIC}
            ]]> 
    </select>

    <select id="getLogsCount" resultType="int">
         select count(l.log_id)
           from DA_QRTZ_LOG l
          where l.job_name = #{job_name, jdbcType = VARCHAR}
       <if test="trigger_id != null and trigger_id != ''">
            and l.trigger_id = #{trigger_id,jdbcType=VARCHAR}
       </if>
       <if test="job_result != null and job_result != ''">
            and l.job_result = #{job_result,jdbcType=VARCHAR}
       </if>
       <if test="beginTime != null and beginTime != ''">
           <![CDATA[
            and start_time >= to_date(#{beginTime, jdbcType = VARCHAR}, 'yyyymmddHH24:MI:SS')
           ]]> 
       </if>
       <if test="endTime != null and endTime != ''">
           <![CDATA[
            and start_time < to_date(#{endTime, jdbcType = VARCHAR}, 'yyyymmddHH24:MI:SS')
           ]]> 
       </if>
    </select>

    <insert id="addTrigger" parameterType="com.paic.dbaudit.bean.table.DA_QRTZ_SCHEDULER">
        insert into da_qrtz_scheduler 
            (job_name, 
            trigger_id,
            trigger_type,
            trigger_expression,
            created_by, 
            created_date, 
            updated_by, 
            updated_date)
        values(
            #{job_name, jdbcType = VARCHAR},    
            #{trigger_id, jdbcType = VARCHAR}, 
            #{trigger_type, jdbcType = NUMERIC}, 
            #{trigger_expression, jdbcType = VARCHAR}, 
            #{created_by, jdbcType = VARCHAR}, 
            sysdate, 
            #{created_by, jdbcType = VARCHAR}, 
            sysdate 
        )
    </insert>

    <insert id="addLog" parameterType="com.paic.dbaudit.bean.table.DA_QRTZ_LOG">
        insert into DA_QRTZ_LOG 
            (
            job_name,
            trigger_id,
            start_time,
            end_time,
            seconds_costed,
            created_by, 
            created_date, 
            updated_by, 
            updated_date)
        values(
            #{job_name, jdbcType = VARCHAR},    
            #{trigger_id, jdbcType = VARCHAR},  
            #{start_time, jdbcType = TIMESTAMP}, 
            #{end_time, jdbcType = TIMESTAMP}, 
            #{seconds_costed, jdbcType = VARCHAR}, 
            #{created_by, jdbcType = VARCHAR}, 
            sysdate, 
            #{created_by, jdbcType = VARCHAR}, 
            sysdate 
        )
    </insert>

    <delete id="deleteTrigger">
        delete from da_qrtz_scheduler where trigger_id = #{trigger_id, jdbcType = NUMERIC}
    </delete>

</mapper>
上一篇:SQL 优化法则,就是这么简单


下一篇:SQL 优化极简法则,还有谁不会?