java
2021-09-17
2021-09-17
人的一切痛苦,本质上都是对自己的无能的愤怒。——王小波
我们clone下来mybatis-plus官方示例项目:
1 | |
首先看文档:
- JSON 字段类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23@Data
@Accessors(chain = true)
@TableName(autoResultMap = true)
public class User {
private Long id;
...
/**
* 注意!! 必须开启映射注解
*
* @TableName(autoResultMap = true)
*
* 以下两种类型处理器,二选一 也可以同时存在
*
* 注意!!选择对应的 JSON 处理器也必须存在对应 JSON 解析依赖包
*/
@TableField(typeHandler = JacksonTypeHandler.class)
// @TableField(typeHandler = FastjsonTypeHandler.class)
private OtherInfo otherInfo;
}该注解对应了 XML 中写法为
1<result column="other_info" jdbcType="VARCHAR" property="otherInfo" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />
文档表明,首先要加@TableName(autoResultMap = true)注解,然后再指定typeHandler
打开示例项目,可以看到确实如此

并且我们数据库表里的数据wallets字段为json

我们运行测试类测试一下:
得到的结果也是完美映射

可以看到我们这里也能自定义转换器

他这里是jackson的,如果我们要使用fastjson的,则可以继承fastjsonTypeHandler
1 | |
测试了下,成功转换
