MyBatis-Plus自定义TypeHandler转换Json


原文链接:https://www.jianshu.com/p/57c01e1b3c63

0x0 背景

在项目开发中,我们有时会将一些属性作为json字符串保存到数据库,此时如何优雅的使用mybatis进行存储和查询就成为一个问题。
mybatis提供了TypeHandler接口可供用户进行自定义属性转换逻辑,本文基于mybatis-plus,写一个demo便于大家参考。

0x1 代码

首先是我们的主角:JsonTypeHandler,该类作为父类使用(因为不知道具体的反序列化类是什么)

public class UserTypeHandler extends JsonTypeHandler<User> {
    public UserTypeHandler() {
        super(User.class);
    }
}

接下来在我们的实体类中,对应的字段上加注解:

@Data
@Accessors(chain = true)
//注意这里,要加autoResultMap = true
@TableName(value = "tb_department", autoResultMap = true)
public class DataSourceInfo {

    @TableId(type = IdType.AUTO)
    private Long id;

    private String type;

    //指定具体的处理器
    @TableField(typeHandler = UserTypeHandler.class)
    private User user;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;
}