最近有需求要写一个定时任务 目的是更新一些员工/人员与部门之间的关系 
项目用的是struts2 当我加了spring的jar包之后写了一个定时任务 项目经理不让用spring 就修改一下 这次贴个全的 
下面是任务类
package com.timetask.action;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapExecutor;
import com.ibatis.sqlmap.engine.impl.SqlMapClientImpl;
import com.util.SqlMap;/*** Quartz定时任务* 更新* @author Administrator**/
public class TimeTaskAction {/*定时任务方法*/public void exec() throws SQLException{System.out.println("quartz定时任务开始");try {List<Map> companys = SqlMap.getSqlMap().queryForList("timetask.findAll_company");updateDept(companys);update_sys_yuang();} catch (Exception e) {e.printStackTrace();}System.out.println("quartz定时任务结束!");}/*递归更新部门表corpid*/public void updateDept(List<Map> list){try {for (Map map : list) {SqlMap.getSqlMap().update("timetask.updatetta_by_depid",map.get("DEPID").toString());SqlMap.getSqlMap().update("timetask.updatetta",map.get("DEPID").toString());List<Map> listLevel = SqlMap.getSqlMap().queryForList("timetask.findSubsidiary",map.get("DEPID").toString());if(listLevel.size()>0){updateDept(listLevel);}}} catch (SQLException e) {System.out.println("ibatis执行sql失败");e.printStackTrace();}}/*sys_yuang 表 corpid与sys_dept表corpid同步*/public void update_sys_yuang(){try {long starttime = System.currentTimeMillis();SqlMap.getSqlMap().update("timetask.update_sys_yuang_corpid");long endtime = System.currentTimeMillis()-starttime;    System.out.println(endtime);} catch (SQLException e) {System.out.println("存储过程调用失败:"+e.getMessage());e.printStackTrace();}}}

上面是任务类,下面是struts2-quartz配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><!-- 要调用的工作类 --><bean id="timetask" class="com.timetask.action.TimeTaskAction"></bean><!-- 定义调用对象和调用对象的方法 --><bean id="mainJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject"><ref bean="timetask"/></property><property name="targetMethod"><value>exec</value></property></bean><!-- 定义触发时间 --><!-- 创建触发器   触发器保存任务的执行时间--><bean id="timeTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="mainJob"></property><!-- 每晚20:01分触发 --><property name="cronExpression" value="0 1 20 * * ?"></property></bean><bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref local="timeTrigger"/></list></property></bean>
</beans>

这是web.xml配置文件

下面是oracle的SQL的xml

把存储过程贴一下 其实就是俩游标

create or replace procedure update_userAndyuang_corpid
as
cursor cur is select d.depid,d.corpid,u.rowid row_id from sys_dept d,sys_user u where u.depid=d.depid order by u.rowid;
cursor cury is select d.depid,d.corpid,u.rowid row_id from sys_dept d,sys_yuang u where u.depid=d.depid order by u.rowid;
v_count number;begin
v_count :=0;
for r in cur loopupdate sys_user set corpid=r.corpid where rowid=r.row_id;v_count:=v_count+1;if(v_count>=1000) thencommit;v_count:=0;end if;
end loop;
commit;
for r in cury loopupdate sys_yuang set corpid=r.corpid where rowid=r.row_id;v_count:=v_count+1;if(v_count>=1000) thencommit;v_count:=0;end if;
end loop;
commit;
end update_userAndyuang_corpid;

成功执行了

完成

struts2+quartz定时任务相关推荐

  1. quartz定时任务开发cron常用网站

    http://cron.qqe2.com/   cron表达式   只能看下5个时点 http://www.cronmaker.com/     能看500个时点 https://unixtime.5 ...

  2. 大数据互联网架构阶段 QuartZ定时任务+RabbitMQ消息队列

    QuartZ定时任务+RabbitMQ消息队列 一 .QuartZ定时任务解决订单系统遗留问题 情景分析: 在电商项目中 , 订单生成后 , 数据库商品数量-1 , 但是用户迟迟不进行支付操作 , 这 ...

  3. Quartz定时任务的基本搭建

    前言 个人地址:Quartz定时任务的基本搭建 Quartz是一个完全由Java编写的开源作业调度框架,为在java应用程序中进行作业调度提供了简单又强大的机制. Quartz中分为几个核心概念: J ...

  4. 记一次quartz定时任务不执行排雷

    过程 项目中需求统计数据,涉及大屏展示,展示的数据很复杂,所以采取了晚上把数据汇总出来存到redis缓存,供白天查询的方式. 用到了quartz定时任务,写好sql.逻辑等测试没问题,就愉快的部署到了 ...

  5. Quartz定时任务-@DisallowConcurrentExecution注解

    Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行, 如果定时任执行太长,会长时间占用资源,导致其它任务堵塞. 在Spring中这时需要设置concurrent ...

  6. bboss quartz定时任务使用案例介绍

    bboss quartz定时任务使用案例介绍 本文demo gradle工程源码地址: [url]https://github.com/bbossgroups/quartzdemo[/url] [si ...

  7. Quartz定时任务使用小记(11月22日)

    骤然接触quartz,先从小处着手,why,what,how quartz定时任务: 为什么使用quartz定时任务,以及定时任务在实际应用场景下的特定需求. 1.用户方面的需要,为了提供更好的使用体 ...

  8. Springboot 使用quartz 定时任务 增删改查

    前段时间公司项目用到了 定时任务 所以写了一篇定时任务的文章 ,浏览量还不错 , Springboot 整合定时任务 ) 所以就准备写第二篇, 如果你是一名Java工程师,你也可以会看到如下的页面 , ...

  9. quartz定时任务不执行

    quartz定时任务执行一段时间不执行的原因 数据库表QRTZ_TRIGGERS 里的TRIGGER_STATE 字段的值自动修改为ERROR了 ,quartz定时任务是不扫描这种ERROR情况. 之 ...

  10. Spring Boot配置Quartz定时任务

    1 Quartz定时任务 Quartz 是一个完全由 Java 编写的开源任务调度框架,为在 Java 应用程序中进行任务调度提供了简单却强大的机制. 基于定时.定期的策略来执行任务是它的核心功能,比 ...

最新文章

  1. 在Linux 下配置PHP 支援GD
  2. python3作用域
  3. OpenStack基金会的白金和黄金成员公司
  4. BN究竟起了什么作用?一个闭门造车的分析
  5. 如何在Java 8中使用LocalDateTime格式化/解析日期-示例教程
  6. 渐进式web应用程序_如何在渐进式Web应用程序中添加到主屏幕
  7. C++ 多重继承之内存存储
  8. oracle建表语句string,编程式Mybatis获取oracle表创建表语句
  9. 【报告分享】2019区块链赋能新型智慧城市白皮书.pdf(附204页电子书下载链接)
  10. LeetCode(9)Palindrome Number
  11. BZOJ1941: [Sdoi2010]Hide and Seek
  12. Delphi2010 Dll 函数列表查看
  13. WEB安全扫描器Netsparker推荐给大家
  14. 服务器硬盘安装win10系统,硬盘安装win10的方法
  15. 百度网盘客户端二维码无法显示及第三方无法登录问题的解决方法
  16. android studio 文件名颜色 灰色,绿色,红色,蓝色,白色的含义
  17. c语言我想你,c语言土味情话
  18. Windows语音通话SDK集成及功能实现(实时语音通话四)
  19. 摄影师用AI预测MJ、李小龙活到现在长什么样,网友看后泪目
  20. MySQL 正负数排序

热门文章

  1. python15 文件操作
  2. Java之网络编程(一)
  3. tkinter尤克里里爬格子练习器
  4. PHP slideup,jQuery.slideUp() 函数使用详解
  5. 【转】程序的运行环境和运行过程
  6. 鸟瞰Atlassian认证
  7. Unity小地图的实现
  8. 在VMWare虚拟机上安装Kali linux系统的完整过程(图文)
  9. sql网上书店项目的实现
  10. java深度模仿支付宝订单号/交易流水号(高性能,不重复)