MyBatis-Plus处理JSON字段配置
文章摘要
本文详细介绍了在MyBatis-Plus中处理数据库JSON类型字段的完整步骤。首先需要在数据库表中定义JSON字段,然后在实体类中通过@TableName和@TableField注解配置类型处理器,最后通过业务代码进行测试验证。文章提供了完整的代码示例,包括数据库建表语句、实体类定义、Mapper接口和Controller实现,展示了如何正确映射和查询JSON格式的数据。
# MyBatis-Plus处理JSON字段配置指南 ## 概述 MyBatis-Plus提供了便捷的方式处理数据库中的JSON类型字段,通过类型处理器实现Java对象与JSON字符串的自动转换。 ## 实现步骤 ### 1. 数据库表定义JSON字段 ```sql CREATE TABLE `extra_info` ( `id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, `extra_object` json NULL, `extra_list` json NULL, `extra_array` json NULL ); INSERT INTO `extra_info` VALUES (1, '{"id": 1, "name": "2"}', '[{"id": 1, "name": "2"}]', '[{"id": 1, "name": "2"}]'); ``` ### 2. 实体类配置类型处理器 ```java 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.FastjsonTypeHandler; import java.io.Serializable; import java.util.List; @TableName(autoResultMap = true) public class ExtraInfo implements Serializable { @TableId(type = IdType.AUTO) private Integer id; @TableField(typeHandler = FastjsonTypeHandler.class) private ExtraNode extraObject; @TableField(typeHandler = FastjsonTypeHandler.class) private List extraList; @TableField(typeHandler = FastjsonTypeHandler.class) private ExtraNode[] extraArray; // Getter和Setter方法 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public ExtraNode getExtraObject() { return extraObject; } public void setExtraObject(ExtraNode extraObject) { this.extraObject = extraObject; } public List getExtraList() { return extraList; } public void setExtraList(List extraList) { this.extraList = extraList; } public ExtraNode[] getExtraArray() { return extraArray; } public void setExtraArray(ExtraNode[] extraArray) { this.extraArray = extraArray; } } ``` ### 3. 定义JSON映射对象 ```java import java.io.Serializable; public class ExtraNode implements Serializable { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` ### 4. 创建Mapper接口 ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.springframework.stereotype.Repository; @Repository public interface ExtraInfoMapper extends BaseMapper { } ``` ### 5. 业务代码测试 ```java import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("/test") public class TestController { @Autowired private ExtraInfoMapper extraInfoMapper; @GetMapping public List listAll() { return this.extraInfoMapper.selectList(new LambdaQueryWrapper()); } } ``` ## 运行结果 ```json [ { "id": 1, "extraObject": { "id": 1, "name": "2" }, "extraList": [ { "name": "2", "id": 1 } ], "extraArray": [ { "id": 1, "name": "2" } ] } ] ``` --- *本文参考自相关技术博客,内容经过整理和优化*
作者头像
admin
分享技术与生活
打赏作者

评论

暂无评论,快来抢沙发吧~