前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis-plus字段类型处理器

mybatis-plus字段类型处理器

作者头像
阿超
发布2022-08-17 20:10:42
1.1K0
发布2022-08-17 20:10:42
举报
文章被收录于专栏:快乐阿超快乐阿超

人的一切痛苦,本质上都是对自己的无能的愤怒。——王小波

我们clone下来mybatis-plus官方示例项目:

代码语言:javascript
复制
https://gitee.com/baomidou/mybatis-plus-samples.git

首先看文档:

  • JSON 字段类型

代码语言:javascript
复制
@Data
@Accessors(chain = true)
@TableName(autoResultMap = true)
public class User {
    private Long id;

    ...


    /**
     * 注意!! 必须开启映射注解
     *
     * @TableName(autoResultMap = true)
     *
     * 以下两种类型处理器,二选一 也可以同时存在
     *
     * 注意!!选择对应的 JSON 处理器也必须存在对应 JSON 解析依赖包
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    // @TableField(typeHandler = FastjsonTypeHandler.class)
    private OtherInfo otherInfo;

}

该注解对应了 XML 中写法为

代码语言:javascript
复制
<resultcolumn="other_info"jdbcType="VARCHAR"property="otherInfo"typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />

文档表明,首先要加@TableName(autoResultMap = true)注解,然后再指定typeHandler

打开示例项目,可以看到确实如此

image-20210917184019702
image-20210917184019702

并且我们数据库表里的数据wallets字段为json

image-20210917184806288
image-20210917184806288

我们运行测试类测试一下:

得到的结果也是完美映射

image-20210917184122076
image-20210917184122076

可以看到我们这里也能自定义转换器

image-20210917184222645
image-20210917184222645

他这里是jackson的,如果我们要使用fastjson的,则可以继承fastjsonTypeHandler

代码语言:javascript
复制
package com.baomidou.mybatisplus.samples.typehandler;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.baomidou.mybatisplus.samples.typehandler.entity.Wallet;

import java.util.List;

/**
 * 自定义复杂类型处理器<br/>
 * 不要问我为什么要重写 parse 因为顶层父类是无法获取到准确的待转换复杂返回类型数据
 */
public class WalletListTypeFastJsonHandler extends FastjsonTypeHandler {
    public WalletListTypeFastJsonHandler(Class<?> type) {
        super(type);
    }

    @Override
    protected Object parse(String json) {
        return JSON.parseObject(json, new TypeReference<List<Wallet>>() {
        });
    }
}

测试了下,成功转换

image-20210917184649445
image-20210917184649445
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档