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));
}
获取结果
合集:
springboot(2)
分类:
Java
, springboot
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.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 架构,改善程序复用性的设计(目录)