mybatis plus实体类中字段映射mysql中的json格式方式

  

下面是关于如何使用MybatisPlus实体类中字段映射MySQL中JSON格式的完整攻略。

1. 引入依赖

在pom.xml中加入以下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis-plus.version}</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>${fastjson.version}</version>
</dependency>

其中${mybatis-plus.version}${fastjson.version}是需要自行定义的版本号。

2. 配置实体类中JSON字段转换

MybatisPlus提供了默认的JSON转换方式,但是需要在配置中注册JsonTypeHandler

@Configuration
public class MybatisPlusConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return new MybatisPlusCustomizers();
    }

    /**
     * 注入JSON类型处理器
     */
    @Bean
    public TypeHandler<BaseBean> jsonTypeHandler() {
        return new JsonTypeHandler<>(BaseBean.class);
    }
}

上述代码中的BaseBean是创建实体类时要继承的基类,用于确保转换器能够处理子类中的JSON字段。

3. 在实体类中使用JSON字段

在实体类的成员变量上使用@TableField(typeHandler = JsonTypeHandler.class)注解即可。

示例1:

@Data
public class User extends BaseBean {

    @TableField(typeHandler = JsonTypeHandler.class)
    private Map<String, Object> extendInfo;

}

在上述示例中,Map对象extendInfo中的所有数据都会被序列化为JSON格式存储到数据库中。

示例2:

@Data
public class Goods extends BaseBean {

    @TableField(typeHandler = JsonTypeHandler.class)
    private List<String> images;

}

在上述示例中,List对象images中的所有数据都会被序列化为JSON格式存储到数据库中。

4. 小结

以上就是使用MybatisPlus实体类中字段映射MySQL中JSON格式的完整攻略,需要注意的是,JSON的结构会影响到MySQL中的存储方式。如果实体类中有多个JSON字段,则只需要在每个字段上使用@TableField(typeHandler = JsonTypeHandler.class)注解即可。

相关文章