本文实现了一种使用 MyBatis 库直接从数据库读入写出 JSON 字符串,转化为 Jackson 库的 JsonNode 的方法。
首先简单了解 Jackson 的类型系统:
- TreeNode 接口是根类型
- JsonNode 抽象类是 TreeNode 接口的直接实现,也是其他 Node 的基类
- 之上再分为 ValueNode 值节点和 ContainerNode 容器节点两种
- 最后是广为人知的 BooleanNode / StringNode / ArrayNode / ObjectNode 等节点
在本文撰写前,MyBatis 3 仍不支持接口作为 MappedType 参数,但 mybatis-3/pull/947 似乎修复了这个问题。但无论如何,本文所述的方案仍然行之有效。
首先我们定义 domain 类
@Data
public class User {
private String id;
private JsonNode