通过下面的依赖,可以将 mysql 的 json 列字段(mysql 5.7及以上的版本支持),映射成 Java Bean
<dependency><groupId>com.vladmihalcea</groupId><artifactId>hibernate-types-52</artifactId><version>2.14.0</version></dependency>
https://github.com/vladmihalcea/hypersistence-utils
在 Class + Field上加下下面的注解:
@Table(name = "test_job_meta")
@Data
@Entity
@TypeDef(name = "json", typeClass = JsonType.class)
public class MerlionJobMeta {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id", insertable = false, nullable = false)private Long id;@Column(name = "job_name")private String jobName;@Type(type = "json")@Column(name = "json_string", columnDefinition = "json")private ScheduleBasedJob jsonString;@Column(name = "create_time")private Timestamp createTime;@Column(name = "update_time")private Timestamp updateTime;}
如果出现 mysql 里面的 json 字段值是中文编码正常的,但经过映射之后就乱码了,有两种解决思路:
总则:在保证整条链路上的 读写侧 + 数据库编码都为 utf-8 的前提下,使用下面的调整方案即可
1,修改 mysql 列为 text 类型,低于 mysql 5.7 版本不支持 json 类型
2,升级 mysql 驱动 jar 的版本,升级 jdbc 驱动 jar 版本大于 5.7
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency>