环境:spring boot项目 mybatis-plus作为持久层
-
实体类 TableName注解添加属性值
autoResuleMap = true
,字段加TableField
注解,添加属性值typeHandler = JacksonTypeHandler.class
FastjsonTypeHandler同样可以实现,二者的区别:
JacksonTypeHandler可以兼容 MybatisPlus 的功能和满足 支持 MySQL JSON 解析- 支持 MVC JSON 解析
- 支持 MySQL JSON 解析
FastjsonTypeHandler
- 支持 MVC JSON 解析
- 不支持 MySQL JSON 解析
@Data
@Accessors(chain = true)
@TableName(value = "base_info",autoResultMap = true)
public class BaselineEcuInfo implements Serializable {
private static final long serialVersionUID = -83548930182013052L;
private Integer id;
private String name;
/**
* 这个字段数据库存的是json字符串
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private InfoDto value;
}
注意事项
- MVC JSON 解析时,可以不用加 @TableName(value = "t_test",
autoResultMap = true
) 【高亮部分】,但是 MySQL JSON 解析查询的时候,如果不加,查出来为 null - MySQL JSON 解析查询时,只支持JSON格式:{"name":"Tomcat","age":10},不支持:{"name":"Tomcat","age":10} 和 "{"name":"Tomcat","age":10}"
- xml文件,resulltMap里面的字段,添加
typeHandler
属性
<result property="ext"
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"
column="ext"/>
注:mybatis 会有所不同