mybatis-plus自动化生成代码情形下对自定义typeHandler的支持

mybatis使用typeHandler的方法不具体展开了,实例很多

针对mybatis-plus框架下自动生成代码情形下,生成的mapper.xml是无字段映射resultMap的。

这时会导致之前定义的typeHandler拦截转换字段发生很多怪异问题,比如全拦或都不拦截了。

针对这个问题需要在实体类上做点文章,我们想对某种类型下其中个别字段进行处理的话(比如:String类型的字段,需要对电话、身份证脱敏,而诸如姓名、地址不作处理),

这时需要配置如下:

1、实体类配置注解:

@MappedJdbcTypes(includeNullJdbcType = false, value = JdbcType.VARCHAR)

2、处理字段注解

@TableField(jdbcType = JdbcType.VARCHAR, typeHandler = XXXTypeHandler.class)
@Data
@EqualsAndHashCode(callSuper = false)
@MappedJdbcTypes(includeNullJdbcType = false, value = JdbcType.VARCHAR) // 只针对jdbcType为varchar的字段进行mapping处理,勿略jdbcType设置为空的字段
@TableName(value = "t_user", autoResultMap = true)
public class SchoolData implements Serializable {

    private static final long serialVersionUID=1L;

    private Long id;

    private String applicantName;

    @TableField(jdbcType = JdbcType.VARCHAR, typeHandler = XXXTypeHandler.class)
    private String applicantPhone;


}

另注意:autoResultMap = true 是对查询结果集做逆转换处理时的自动映射

 

PS:后续补充完整

posted @ 2020-07-30 16:46  许方洲  阅读(2669)  评论(0编辑  收藏  举报