mybatis-plus读取JSON类型
本文总共三个步骤:
1、在数据库表定义JSON字段;
2、在实体类加上@TableName(value = “extra_info”, autoResultMap = true)、在JSON字段映射的属性加上
@TableField(typeHandler = JacksonTypeHandler.class);
@TableField(typeHandler = ObjectAndJsonHandler.class);
3、建一些业务代码进行测试;
在数据库表定义JSON字段
DROP TABLE IF EXISTS `extra_info`;
CREATE TABLE `extra_info` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`extra_json` json NULL,
`extra_object` json NULL,
`extra_list` json NULL,
`extra_array` json NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
INSERT INTO `extra_info` VALUES (1, '{\"id\": 6, \"name\": \"7\"}', '{\"id\": 1, \"name\": \"2\"}', '[{\"id\": 1, \"name\": \"2\"}, {\"id\": 2, \"name\": \"3\"}]', '[{\"id\": 1, \"name\": \"2\"}, {\"id\": 4, \"name\": \"5\"}]');
实体类处理
在实体类加上@TableName(value = "extra_info", autoResultMap = true)
、在JSON字段映射的属性加上@TableField(typeHandler = JacksonTypeHandler.class)
,@TableField(typeHandler = ObjectAndJsonHandler.class)
JacksonTypeHandler为mybatisplus自带,ObjectAndJsonHandler自定义;
ExtraInfo,ExtraNode
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.util.ObjectAndJsonHandler;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
@TableName(value = "extra_info", autoResultMap = true)
public class ExtraInfo implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@TableField(typeHandler = JacksonTypeHandler.class)
private ExtraNode extraObject;
@TableField(typeHandler = FastjsonTypeHandler.class)
private JSONObject extraJson;
@TableField(typeHandler = ObjectAndJsonHandler.class)
private List<ExtraNode> extraList;
@TableField(typeHandler = JacksonTypeHandler