当前位置: 首页 > article >正文

MyBatis-Plus中使用JSON 类型字段

在 MyBatis 中,类型处理器(TypeHandler)扮演着 JavaType 与 JdbcType 之间转换的桥梁角色。它们用于在执行 SQL 语句时,将 Java 对象的值设置到 PreparedStatement 中,或者从 ResultSet 或 CallableStatement 中取出值。

MyBatis-Plus 提供了一些内置的类型处理器,可以通过 TableField 注解快速注入到 MyBatis 容器中。MyBatis-Plus 内置了多种 JSON 类型处理器,包括 AbstractJsonTypeHandler 及其子类 Fastjson2TypeHandlerFastjsonTypeHandlerGsonTypeHandlerJacksonTypeHandler 等。这些处理器可以将 JSON 字符串与 Java 对象相互转换。

实体类

@Data
@Accessors(chain = true)
@TableName(autoResultMap = true)
public class User {
    private Long id;

    ...

    /**
     * 必须开启映射注解
     *
     * @TableName(autoResultMap = true)
     *
     * 选择对应的 JSON 处理器,并确保存在对应的 JSON 解析依赖包
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    // 或者使用 FastjsonTypeHandler
    // @TableField(typeHandler = FastjsonTypeHandler.class)
    private OtherInfo otherInfo;
}

XML 配置对应写法

<!-- 单个字段的类型处理器配置 -->
<result column="other_info" jdbcType="VARCHAR" property="otherInfo" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />

<!-- 多个字段中某个字段的类型处理器配置 -->
<resultMap id="departmentResultMap" type="com.baomidou...DepartmentVO">
    <result property="director" column="director" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />
</resultMap>
<select id="selectPageVO" resultMap="departmentResultMap">
   select id,name,director from department ...
</select>


http://www.kler.cn/a/401404.html

相关文章:

  • 学习electron
  • [已解决]Tomcat 9.0.97控制台乱码
  • 运维面试题.云计算面试题之三ELK
  • 身份证号码校验
  • VSCode+ESP-IDF开发ESP32-S3-DevKitC-1(2)第一个工程 LED心跳灯
  • 【经验分享】2024年11月下半年软件设计师考试选择题估分(持续更新~~)
  • 11.15机器学习_线性回归
  • Android开发实战班 - 现代 UI 开发之 Jetpack Compose 基础
  • ssm137基于SSM框架的微博系统+vue(论文+源码)_kaic
  • 学习记录:js算法(九十九):冗余连接
  • 嵌入式硬件实战基础篇(二)-稳定输出3.3V的太阳能电池-无限充放电
  • vue 常用特性 ( 计算属性 | 侦听器 | 过滤器 )
  • 每日一练:【优先算法】双指针之移动零(easy)
  • springboot 配置文件中 multipart.max-file-size 各个版本的写法
  • 网络安全之信息收集-实战-1
  • Vue3 动态获取 assets 文件夹图片
  • 下一代以区域为导向的电子/电气架构
  • odoo中怎么实现form表单国家的省市县级联输入
  • 推荐一款功能强大的图表绘制工具:EDGE Diagrammer
  • 生成式AI如何重塑在线就业市场
  • MySQL(5)【数据类型 —— 字符串类型】
  • HAL库中MSP回调--HAL_PPP_MspInit()与中断回调--HAL_PPP_Callback()的区别及一些学习见解
  • Java基础夯实——2.4 线程的生命周期
  • FastDDS之DataSharing
  • Odoo中,要实现实时数据推送,SSE 与 WebSocket 该如何选择
  • 利用python 检测当前目录下的所有PDF 并转化为png 格式