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;
}