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));
	}

获取结果

posted @   张占岭  阅读(1078)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2023-04-23 springboot~关于md5签名引发的问题
2018-04-23 java~日期与字符串的转化
2014-04-23 MVVM架构~前台后台分离的思想与实践
2012-04-23 架构,改善程序复用性的设计(目录)
点击右上角即可分享
微信分享提示