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:后續補充完整