玛卡巴卡的卡巴卡玛 发表于 2024-5-18 03:24:53

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));
        }获取结果

https://img2024.cnblogs.com/blog/118538/202404/118538-20240423174910468-775269309.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: springboot~mybatis-plus中使用TypeHandler做范例映射