Mybatis-Plus 实体json互相转化; typeHandler的使用

环境:spring boot项目 mybatis-plus作为持久层

  1. 实体类 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}”
  1. xml文件,resulltMap里面的字段,添加 typeHandler 属性
<result property="ext"
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" 
column="ext"/>

注:mybatis 会有所不同

猜你喜欢

转载自blog.csdn.net/qq_43842093/article/details/132792538