springboot 整合 canal(TCP模式) 数据同步示例 方案二

1 添加maven依赖

<dependency>
            <groupId>top.javatool</groupId>
            <artifactId>canal-spring-boot-starter</artifactId>
            <version>1.2.1-RELEASE</version>
</dependency>

2 application.yml配置修改

# destination 要与安装canal时设置的名称一致
# conf/canal.properties 文件中 canal.destinations 配置的
canal:
  destination: example
  server: 127.0.0.1:11111

3 复写 EntryHandler<需要监听实体类> 接口 得到三个方法 insert() update() delete()

package cn.haiwang.handle;

import cn.haiwang.pojo.User;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;

@Component
@CanalTable("canal_user_1")  // @CanalTable("需要监控的表名")
public class UserHandler implements EntryHandler<User> {

    /**
     * 新增操作
     *
     * @param user
     */
    @Override
    public void insert(User user) {
        //你的逻辑
        System.out.println("新增 {}" + user);
    }

    /**
     * 对于更新操作来讲,before 中的属性只包含变更的属性,after 包含所有属性,通过对比可发现那些属性更新了
     *
     * @param before
     * @param after
     */
    @Override
    public void update(User before, User after) {
        //你的逻辑
        System.out.println("更新 before{}" + before);
        System.out.println("更新 after{}" + after);
    }

    /**
     * 删除操作
     *
     * @param user
     */
    @Override
    public void delete(User user) {
        //你的逻辑
        System.out.println("删除" + user);
    }
}

4 监听的表的实体类上加上注解【字段名称不一致,就需要添加注解】

package cn.haiwang.pojo;

import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;

@Data
public class User implements Serializable {

    /**
     * @Id 声明属性为主键
     */
    @Id
    @Column(name = "id")
    private Long bianhao;

    @Column(name = "name")
    private String xingming;
    private Integer age;

    /**
     * @Transiten表示此属性与表没有映射关系,是一个暂时的属性
     */
    @Transient
    private String aihao;

    /**
     * 2.实体类字段名与数据库字段名不一致 ,需要加上@Column(name = "")注解
     */
    @Column(name = "add_time")
    private Date addTime;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值