springboot~mybatis-plus中使用TypeHandler做類型映射

mybatis-plus中,如果數據表字段類型與java實體字段類型不一樣,這時就需要做類型映射與轉換了,我們一般可以實現TypeHandler接口,或者繼承抽象類BaseTypeHandler,我們下面舉例來說明一下它的使用方法。

場景

  • 數據表裏字段是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));
	}

獲取結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章