Spring Boot + MyBatis Plus 存储 JSON 或 List 列表全攻略

ops/2025/1/13 3:15:24/

在现代的后端开发中,我们常常需要处理复杂的数据结构,JSON 数据以及列表(List)数据屡见不鲜。如何高效地使用 Spring Boot 和 MyBatis Plus 来存储这些复杂数据类型,是这篇博客要探讨的重点。

一、为什么要存储 JSON 或 List 列表

例如商品的规格参数可能是一个复杂的 JSON 字符串,它包含了尺寸、颜色、材质等多个维度的信息。这时,能够直接存储 JSON 或 List 列表就显得尤为重要,它让我们的数据模型更加贴合业务实际需求,减少不必要的数据库表关联,简化开发流程。

二、实操

假设我们要存储一篇文章,文章有标题、内容,还有一个标签列表(List<String>)以及一些额外的元数据(以 JSON 格式存储)。

java">import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.util.List;@Data
@TableName(value = "articles", autoResultMap = true)
public class Article {private Long id;private String title;private String content;@TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)private List<String> tags;@TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)private Metadata metadata;@Datapublic static class Metadata {private String author;private String publishDate;}
}

在上述实体类中,通过 @TableField 注解结合 JacksonTypeHandler(MyBatis Plus 自带的一种 JSON 类型处理器,它依赖于 Jackson 库进行 JSON 序列化和反序列化),告诉 MyBatis Plus 要将 tags 列表和 metadata 对象以 JSON 形式存储到数据库对应的字段中。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mapper.ArticleMapper"><!-- 查询映射结果 --><resultMap id="BaseResultMap" type="com.test.entity.Article"><result column="id" property="id" /><result column="title" property="title" /><result column="content" property="content" /><result column="tags"  property="tags" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" /><result column="metadata" property="metadata" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" /></resultMap></mapper>

配置重点:

  • @TableName中的 autoResultMap = true
  • @TableField(typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
  • <result column="tags"  property="tags" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />

http://www.ppmy.cn/ops/149081.html

相关文章

C#核心技术---Linq

目录 Linq介绍 Linq查询 语句查询 Linq扩展方法 Linq介绍 LINQ(读音link)——语言集成查询&#xff08;Language Integrated Query&#xff09;&#xff0c;是.NET框架的扩展&#xff0c;一系列直接将查询功能集成到 C# 语言的技术统称&#xff0c;是一种使用类似SQL语句操…

基于单片机的空调温度测试测控系统设计

摘 要 : 单片机在测试测控系统中占据着重要的地位 , 本文以 AT89C51 单片机为基础 , 进行了空调温度测试测控系统的设计, 分析了其硬件设计组成及软件功能实现 , 旨在为空调温度测试测控系统的相关研究和设计实践提供参考. 关键词 : 单片机 ; 空调温度 ; 测试测控系…

Spark是什么?Flink和Spark区别

Spark是什么&#xff1f;Flink和Spark区别 一、Spark二、Spark和Flink区别三、总结 一、Spark Apache Spark 是一个开源的大数据处理框架&#xff0c;主要用于大规模数据处理和分析。它支持多种数据处理模式&#xff0c;包括批处理、流处理、SQL 查询、机器学习和图处理等。 核…

长上下文窗口的大语言模型数据设计

长上下文窗口的大语言模型数据设计 第一部分&#xff1a;引言 随着大语言模型&#xff08;LLMs&#xff09;的广泛应用及其日益成长的复杂性&#xff0c;处理长文本内容已成为研究者和开发者面临的重要挑战。长上下文窗口的设计尤为关键&#xff0c;决定了模型能否高效处理长…

岭南师范学院携手泰迪智能科技共建研究生联合培养基地

1月6日&#xff0c;岭南师范学院数学与统计学院栾姝院长、统计系赵海清主任、信息与计算科学系刘雄副主任&#xff0c;教学督导潘立军教授莅临广东泰迪智能科技股份有限公司产教融合实训中心开展“泰迪智能科技岭南师范学院研究生联合培养基地”战略合作签约仪式。泰迪智能科技…

丢帧常见的几种处理方法

1. 优化硬件配置 • 升级计算机硬件&#xff0c;如增加内存、使用更高速的 CPU 和存储设备&#xff0c;以提高数据处理和传输能力。• 确保相机与计算机之间的连接稳定&#xff0c;如使用高质量的数据线、合适的接口卡&#xff0c;并检查接口是否松动。 2. 调整相机参数 • 降低…

uniApp 在真机环境下报错:包时未添加cemera模块,请参考https://ask.dcloud.net.cn/article/283

文章目录 问题分析 问题 uniApp 在真机环境下报错&#xff1a;包时未添加cemera模块&#xff0c;请参考https://ask.dcloud.net.cn/article/283 分析 打开提示的网址&#xff1a;https://ask.dcloud.net.cn/article/283&#xff0c;根据网址中的提示我们配置打包时的环境

Unigui基于vue+elementui的自研框架

一、前言 笔者由于近期遇到一个项目&#xff0c;其基础数据维护功能的数据项较多、开发效率、周期都较长&#xff0c;当时考虑项目周期、项目稳定性情况&#xff08;部分版本在基础类继承以及处理存在部分bug&#xff09;下、功能不具备通用性&#xff0c;采用原始的每项功能单…