1、新建项目
2、添加依赖(按需要连接的数据库驱动,添加依赖)
3、添加jdbc数据库配置文件:src\main\resource\application.yml
spring:
datasource:
jdbc-url: jdbc:oracle:thin:@//IP地址:端口/SERVICENAME
username: 用户名
password: 密码
driverClassName: oracle.jdbc.OracleDriver
datasourcepg:
jdbc-url: jdbc:postgresql://IP地址:端口/数据库名称
username: 用户名
password: 密码
driverClassName: org.postgresql.Driver
datasourcemysql:
jdbc-url: jdbc:mysql://IP地址:端口/数据库名称?useUnicode=true&characterEncoding=GBK
username: 用户名
password: 密码
driverClassName: com.mysql.jdbc.Driver
4、添加数据源配置类 src\main\DataSourceConfig.java
该类关联 application.yml中的数据库参数
@Configuration
public class DataSourceConfig {
@Bean("dataSourceOracle")
@ConfigurationProperties("spring.datasource")
public DataSource mDataSourceOracle(){
return DataSourceBuilder.create().build();
}
@Bean("dataSourcePg")
@ConfigurationProperties("spring.datasourcepg")
public DataSource mDataSourcePg(){
return DataSourceBuilder.create().build();
}
@Primary
@Bean("jdbcTemplateOracle")
public JdbcTemplate mJdbcTemplateOracle(@Qualifier("dataSourceOracle") DataSource dataSource){
return new JdbcTemplate(dataSource);
}
@Bean("jdbcTemplatePg")
public JdbcTemplate mJdbcTemplatePg(@Qualifier("dataSourcePg") DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}5、添加数据操作逻辑类 src\main\CollectItem.java
getData 实现要操作的数据;getCron 获取CRON格式指定的执行时间。
@Service
public class CollectItem {
@Autowired
@Qualifier("jdbcTemplateOracle")
JdbcTemplate jdbcTemplate;
@Autowired
@Qualifier("jdbcTemplatePg")
JdbcTemplate jdbcTemplatePg;
public void getData() throws InterruptedException {
int i;
List rs0 = jdbcTemplatePg.queryForList("select * from XXXXXXXX");
Map m0= (Map) rs0.get(0);
Map m1;
rs0 = jdbcTemplatePg.queryForList("select * from XXXXXX");
for(int j=0;j -1) {
SqlRowSet rs1 = jdbcTemplate.queryForRowSet(m1.get("sql1").toString());
while (rs1.next()) {
i = jdbcTemplatePg.update(m1.get("sql2").toString(), rs1.getString(1), rs1.getString(2), rs1.getDate(3), rs1.getDate(4), rs1.getInt(5));
}
}
i = jdbcTemplatePg.update(m0.get("sql2").toString(), proj_id);
}
i = jdbcTemplatePg.update(m1.get("sql3").toString());
i = jdbcTemplatePg.update(m0.get("sql5").toString());
}
i = jdbcTemplatePg.update(m0.get("sql3").toString());
i = jdbcTemplatePg.update(m0.get("sql4").toString());
}
public String getCron() throws InterruptedException {
SqlRowSet rs0 = jdbcTemplatePg.queryForRowSet("select * from XXXXXXXXXXX");
String s="";
if (rs0.next()) {
s = rs0.getString("sql5");
}
return s;
}
} 6、添加 定时任务配置类 src\main\AutoJob.java
生成 CollectItem 的实例并调用 getData 进行数据处理。
public class AutoJob extends QuartzJobBean {
@Autowired
CollectItem collectItem;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
try {
collectItem.getData();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}7、添加定时任务配置类 src\main\QuartzConfig.java
指定执行时间,并指定调用 AutoJob
@Configuration
public class QuartzConfig {
@Bean
public JobDetail printTimeJobDetail(){
return JobBuilder.newJob(AutoJob.class)
.withIdentity("AutoJob")
.usingJobData("msg", "AutoJob Quartz")//关联键值对
.storeDurably()
.build();
}
@Autowired
CollectItem collectItem;
@Bean
public Trigger printTimeJobTrigger() {
String s="";
try {
s=collectItem.getCron();
} catch (InterruptedException e) {
e.printStackTrace();
}
//s = "0 39 14 * * ?"; 每天的14:39:00 执行
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(s);
return TriggerBuilder.newTrigger()
.forJob(printTimeJobDetail())
.withIdentity("quartzTaskService")
.withSchedule(cronScheduleBuilder)
.build();
}
} | 留言与评论(共有 0 条评论) “” |