26
2017
09

Spring定时器Quartz,定时调用存储过程

  1. maven依赖导入:
<dependency>  
            <groupId>org.quartz-scheduler</groupId>  
            <artifactId>quartz</artifactId>  
            <version>1.8.5</version>  
        </dependency> 

<spring.version>4.0.8.RELEASE</spring.version> 
<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>

2、配置:

<!-- 定时加载的类 -->
    <bean id="time1" class="com.gent.timeTest"></bean>

     <!-- 定时器的配置 -->
     <bean id="timeDitail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
     <property name="targetObject" ref="time1"></property><!-- 指定任务类 -->
     <property name="targetMethod" value="getTime"></property><!-- 指定任务方法 -->
     </bean>

     <!-- 定时时间间隔触发器 -->
     <bean id="timeTigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
     <property name="jobDetail" ref="timeDitail"></property>
     <property name="cronExpression">
     <value>0 27 08 * * ?</value>
     </property>
     </bean>

     <!-- 启动定时器 -->
     <bean id="startJob" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
     <property name="triggers">
     <list>
     <ref bean="timeTigger"/>
     </list>
     </property>
     </bean>

3、定时任务:

public class timeTest {

    public timeTest(){}
    @Test
    public void getTime(){

        System.out.println("定时任务启动");
        /** * 1,定义变量 */
        String driverClass ="oracle.jdbc.OracleDriver";
        String url="jdbc:oracle:thin:@192.168.10.23:1521:syj";
        String user="syjU";
        String password="syjUP";

        try{
            //映射

            Class.forName(driverClass);

            //2、获取连接对象

            Connection connection=DriverManager.getConnection(url,user,password);

            //3.创建执行存储过程的语句对象

            String sql="{call TestProcess()}";

            CallableStatement callableStatement=connection.prepareCall(sql);

            //4、设置参数

            //callableStatement.setString(1, "admin");

            //callableStatement.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR);

            //5、执行

            //callableStatement.executeQuery();
            callableStatement.execute();
            //6、获取数据

            //String ename=callableStatement.getString(2);

            ResultSet set=callableStatement.getResultSet();

            System.out.print("set:"+set);
            //释放资源
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

4、存储过程:

create or replace procedure TestProcess
AS

innamee varchar2(2000);

cursor cour is select name from sys_user where del_flag=’0’;

Begin

open cour;

loop

fetch cour into innamee;

exit when cour%NOTFOUND;

DBMS_OUTPUT.PUT_LINE(cour);

end loop;

close cour;

End;

5.
附表:
“0 0 12 * * ?” 每天中午12点触发
“0 15 10 ? * *” 每天上午10:15触发
“0 15 10 * * ?” 每天上午10:15触发
“0 15 10 * * ? *” 每天上午10:15触发
“0 15 10 * * ? 2005” 2005年的每天上午10:15触发
“0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发
“0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发
“0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
“0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发
“0 10,44 14 ? 3 WED” 每年三月的星期三的下午2:10和2:44触发
“0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发
“0 15 10 15 * ?” 每月15日上午10:15触发
“0 15 10 L * ?” 每月最后一日的上午10:15触发
“0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6#3” 每月的第三个星期五上午10:15触发

上一篇:Fragment no longer exists for key f0: index 0 下一篇:一次ContentProvider踩坑之旅