spring boot 2.x 使用 jpa 映射 json mysql列数据映射乱码

通过下面的依赖,可以将 mysql 的 json 列字段(mysql 5.7及以上的版本支持),映射成 Java Bean

            
                com.vladmihalcea
                hibernate-types-52
                2.14.0
            

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

            
                mysql
                mysql-connector-java
                8.0.28
            

你可能感兴趣的:(spring,boot,json,mysql)