Spring sqlserver job定时操作事务

spring job定时添加

public void addUser(){
  String sql ="INSERT INTO t_user (username,passwordlogintype) values('admin','admin','1')"
  busiApplyDao.executeSql(sql);
 }
第一步 添加 addUser这个bean
<!-- 使用MethodInvokingJobDetailFactoryBean来创建作业对象 -->
<bean id="addUser"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <!-- 目标对象,指的是作业任务的实现类 -->
    <property name="targetObject" ref="busiApplyManager" />
    <!-- 目标方法,指的是指定实现类中的哪个方法作为调度时的执行方法 -->
    <property name="targetMethod" value="addUser" />
    <!-- 是否并发 -->
    <property name="concurrent" value="false" />
</bean>

触发器

在spring中,触发器也分为simpleTrigger和cronTrigger,而且它们的使用也是非常简单,只需要配置一个bean元素即可。下面我们分别看看它们两者的配置:

simpleTrigger
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
       
<!-- 这里的JobDetail指的就是我们配置的作业任务的bean -->
        
<property name="jobDetail" ref="addUser" />
        
<!-- 延迟5秒开始 -->
        
<property name="startDelay" value="5000"></property>
        
<!-- 每3秒重复一次 -->
      
<property name="repeatInterval" value="3000"></property>    
</bean>
cronTrigger
<bean id="addUsers" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="addUser" />
  <property name="cronExpression" value="0 0/1 * * * ?" /><!--每1分钟执行一次-->
  <!-- <property name="cronExpression" value=" 0 55 23 ? * * " /> -->
 </bean>
以上就是触发器的基本配置,上述两个触发器的工厂bean还有一些其他的属性,例如jobDataMap,priority等等。如果有需要,您可以参考相关的文档。

调度程序

最后,最简单的莫过于作业调度程序了,在spring中只需要这样配置即可:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<!--指定使用哪些触发器,spring会去调度触发相应的触发器,进而对作业任务进行调度处理-->

  <property name="triggers">
   <list>
        <ref bean="addUsers" />
   </list>
  </property>
 </bean>

以上就是对Quartz与Spring的整合使用的基本介绍了。总体来说,Quartz的定时任务功能已经很强大了,而spring对其的整合更是让程序员在使用定时任务是如虎添翼。

sqlserver JOB的创建,定时,执行

--建表 

1
2
3
4
5
create table test_job(para_date date); 
commit; 
insert into test_job values(sysdate); 
commit;
select * from test_job;

 

--建立存储过程  

1
2
3
4
create or replace procedure test_jobproce   as 
begin 
insert into test_job values(sysdate); 
end test_jobproce;

 

--建立job 

--建立job后默认是执行的 

 

1
2
3
4
5
declare  test_job_really number; 
begin 
dbms_job.submit(test_job_really, 'test_jobproce;' ,sysdate, 'sysdate+1/1440' ); 
commit; 
end;

 执行时间汇总:

1、 每分钟执行

1
Interval => TRUNC(sysdate,’mi’) + 1 / (24*60)

 

2、 每天定时执行

 

例如:每天的凌晨2点执行

1
Interval => TRUNC(sysdate) + 1 +2 / (24)

 

3、 每周定时执行

 

例如:每周一凌晨2点执行

1
Interval => TRUNC(next_day(sysdate,2))+2/24

 

4、 每月定时执行

 

例如:每月1日凌晨2点执行

1
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24

 

 

5、 每季度定时执行

 

例如每季度的第一天凌晨2点执行

1
Interval => TRUNC(ADD_MONTHS(SYSDATE,3), 'Q' ) + 2/24

 

6、 每半年定时执行

 

例如:每年7月1日和1月1日凌晨2点

1
Interval => ADD_MONTHS(trunc(sysdate, 'yyyy' ),6)+2/24

 

7、 每年定时执行

 

 

例如:每年1月1日凌晨2点执行

1
Interval =>ADD_MONTHS(trunc(sysdate, 'yyyy' ),12)+2/24

---停止job  

25是建立的job test_job_really ,可以通过dba_jobs查看

1
2
3
4
begin 
dbms_job.broken(25, true ); 
commit; 
end;

 

 

--启动job 

1
2
3
4
begin 
dbms_job.run(25); 
commit; 
end;

 

--删除job 

 

1
2
3
4
begin  
dbms_job. remove (25); 
commit; 
end;

 

--查看执行结果 

1
select  * from test_job order by test_job.para_date desc;

 

 

--查看job 

1
select * from sys.user_jobs

 

--使用下面的SQL查询是否JOB还在Running,前提是需要job执行时间不能过短 

1
select * from dba_jobs_running

 

--除了submit参数外,其余的几个参数有: 

--运行job

 

1
dbms_job.run(v_job);

 

--停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。 

1
dbms_job.broke(v_job, true ,next_date);

 

--删除某个job 

1
2
dbms_job. remove (v_job); 
dbms_job.what(v_job, 'sp_fact_charge_code;' );

 

--修改某个job名 修改下一次运行时间 

1
dbms_job.next_date(v_job,sysdate);

-修改job

1
2
3
4
begin
   dbms_job.change(62 , 'MY_JOP;' , sysdate, 'sysdate+2/(24*60)'  );
   commit;
end;<br>转:http: //www.cndba.cn/account/article/details/128

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值