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));
- }
复制代码 获取结果
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |