springboot~mybatis-plus中使(shi)用TypeHandler做類型映射
mybatis-plus中,如果數據表字段類型(xing)與java實體字段類型(xing)不一樣,這(zhe)時就需要做類型(xing)映射與轉換(huan)了(le),我們(men)一般可以實現TypeHandler接口,或者繼承抽象類BaseTypeHandler,我們(men)下(xia)面舉例(li)來說明一下(xia)它的使用(yong)方法(fa)。
場景
- 數據表里字段是varchar,java里是List集合,例如:我的愛好標簽
- 數據表里字段是varchar,java里是個Map對象,例如:我曾經居住過的地方
操作步驟
實體類
- 類注解的參數
autoResultMap = true,它影響TypeHandler中的getResult方法的執行 - 字段注解
@TableField(typeHandler = ListTypeHandler.class)
@Data
@TableName(value = "t_user", autoResultMap = true)
public class TUser extends BaseEntity {
private String username;
@TableField(typeHandler = MapTypeHandler.class)
private Map extensionInfo;
@TableField(typeHandler = ListTypeHandler.class)
private List<String> likeList;
}
插入方法
@Test
public void insert() {
TUser user = new TUser();
user.setUsername("lind");
user.setExtensionInfo(new HashMap() {{
put("city", "beijing");
put("area", "shijingshan");
}});
user.setLikeList(java.util.Arrays.asList("basketball", "football"));
userDao.insert(user);
}
獲取方法
@Test
public void read() {
QueryWrapper<TUser> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(TUser::getCreateBy, 1);
log.info("user1:{}", userDao.selectList(wrapper));
}
獲取結果
