spring boot 2.x 使用 jpa 映射 json mysql列数据映射乱码
通过下面的依赖,可以将 mysql 的 json 列字段(mysql 5.7及以上的版本支持),映射成 Java Bean。1,修改 mysql 列为 text 类型,低于 mysql 5.7 版本不支持 json 类型。2,升级 mysql 驱动 jar 的版本,升级 jdbc 驱动 jar 版本大于 5.7。
·
通过下面的依赖,可以将 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>
更多推荐
所有评论(0)