mysql中数据类型json,要求版本5.7及以上
所需依赖
<dependency>
<groupId>com.vladmihalcea</groupId>
<artifactId>hibernate-types-52</artifactId>
<version>2.10.4</version>
</dependency>
实体类
@Column(columnDefinition = "json comment '源数据'")
@TableField(typeHandler = ExtendDataTypeHandler.class)
@Type(type = "json")
private Map<String, Object> sourceData;
注意:
Hibernate ORM 中没有json 类型。您可以使用 Hibernate Types project它提供对 JSON 的支持。
要添加对 json 的支持,需要将以下 @TypeDef 注释添加到您的实体:
@TypeDef(name = "json", typeClass = JsonStringType.class)
对应的JSON序列化处理器
@MappedTypes({Map.class})
@MappedJdbcTypes(JdbcType.VARCHAR)
public class ExtendDataTypeHandler extends FastjsonTypeHandler {
private final Class<Map<String, Object>> type;
public ExtendDataTypeHandler(Class<Map<String, Object>> type) {
super(type);
this.type = type;
}
@Override
protected Map<String, Object> parse(String json) {
return JSON.parseObject(json, type);
}
}
我这里是使用的Map<String,Object>去映射,当然你也可以用字符串,JSONObject或者业务实体类去映射
在MySQL5.7及以上版本中,可以使用JSON数据类型。文章提到了HibernateORM不直接支持JSON,但可以通过HibernateTypes项目来实现支持。在实体类中,使用了注解`@Column`,`@TableField`和`@Type`来定义JSON字段,并自定义了`ExtendDataTypeHandler`类型处理器,该处理器基于Fastjson进行JSON序列化和反序列化。示例中使用`Map<String,Object>`来映射JSON数据,也可以使用字符串、JSONObject或其他业务实体类。
1万+

被折叠的 条评论
为什么被折叠?



