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:后续补充完整