springboot定时同步数据,从sqlserver到mysql
2022/8/30 2:22:49
本文主要是介绍springboot定时同步数据,从sqlserver到mysql,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
定时同步数据,从sqlserver到mysql 注意事项: 一.primary: master #设置默认的数据源或者数据源组,默认值即为master 二.@Scheduled() 和 @DS("slave_1")注解 步骤: 1.在原先运行的程序外,新建多加一个springboot程序 2.配置好yml,连接两个数据库,全局配置一个开始时间dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源. datasource: master: url: jdbc:mysql://ip:端口/库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置 slave_1: url: jdbc:sqlserver://ip:端口;DatabaseName=ykt username: sa password: 123 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver time: 2020-01-01 00:00:003.写好两个实体类,一个sqlserver的表,一个mysql的表 4.写好转移的逻辑业务(HelloService中)
@Service @Slf4j public class HelloService { @Autowired private DataMapper dataMapper; @Autowired private ParkRecordMapper parkRecordMapper; @Value("${time}") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date starTime; public void saveData() throws ParseException { //以下为具体业务,根据自己需求修改 log.info("进入数据转存定时任务"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date endTime = new Date(); List<ComeCar> comeCars = dataMapper.selectByTime(starTime,endTime); if (comeCars!=null && comeCars.isEmpty()){ return; } for (int i = 0; i < comeCars.size(); i++) { ComeCar comeCar = comeCars.get(i); log.info("正在转存数据"); ParkRecord parkRecord = new ParkRecord(); parkRecord.setCreateDate(formatter.parse(comeCar.getComeDate())); parkRecord.setPhoto(comeCar.getComePic()); log.info("单条数据为"+parkRecord); parkRecordMapper.insert(parkRecord); } starTime = endTime; log.info("刷新数据成功"); } }
5.创建一个定时器(SchedulingTask)
@Component @Async @Slf4j public class SchedulingTask { private final long TEN_MINUTES = 600000; @Autowired HelloService helloService; /** * 每10分钟刷新一下数据 */ @Scheduled(fixedRate = TEN_MINUTES) public void refreshData() { try { helloService.saveData(); log.info("定时任务开启,每10分钟刷新一下数据"); } catch (ParseException e) { log.error("刷新数据失败,sql Server数据库有可能挂了"); e.printStackTrace(); } } }
6.HelloController
@RestController public class HelloController { @Autowired HelloService helloService; @GetMapping("hello") public String hello() throws ParseException { helloService.saveData(); return "hello"; } }
7.运行测试没问题,修改模拟数据库地址,maven导出jar包,再到云服务器上运行就可以了!
8.具体业务其中一个mapper(sqlserver表)
@Mapper public interface DataMapper { @DS("slave_1") List<ComeCar> selectByTime(@Param("star_time") Date starTime,@Param("end_time")Date endTime); }
这篇关于springboot定时同步数据,从sqlserver到mysql的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南