news 2026/4/15 13:09:05

java 实体属性 Map 解决 mybatis-plus wrapper selectone 查mysql json类型为null 问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java 实体属性 Map 解决 mybatis-plus wrapper selectone 查mysql json类型为null 问题

mysql 有个字段是json类型

`content_map`json DEFAULT NULL COMMENT'个性化配置内容(LAN3/BGP等)',

java 实体属性

/** * 个性化配置内容(JSON存储,包含LAN3/BGP等) */ @TableField(value="content_map", typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)private Map<String, Object>contentMap;

mybatis-plus 使用wrapper

LambdaQueryWrapper<xxxx>queryWrapper=new LambdaQueryWrapper<>();queryWrapper.eq(xxx::getId,id).eq(xxx::getStoreCode, storeCode);//2. 查询现有记录 xxxxx=xxx.getOne(queryWrapper);

但是问题是:content_map 查不到数据,用原生的mybatis 可以正常使用
原因:
MyBatis-Plus 的 JacksonTypeHandler(以及大多数自定义 TypeHandler)默认是按字符串(String)来处理 JSON 的。
但 MySQL 的 JSON 类型在 JDBC 驱动中返回的是 java.sql.SQLJSON 对象(或内部以二进制/特殊格式存储),不是 String!
JDBC 返回 SQLJSON,JacksonTypeHandler 调 getString() 可能失败 → 改用 TEXT

AI和 网上建议加上

@MappedJdbcTypes(JdbcType.OTHER)// MySQL JSON 类型映射为 JdbcType.OTHER @MappedTypes(Map.class)public class MySqlJsonTypeHandler extends BaseTypeHandler<Map<String, Object>>{

改xml文件

<resultproperty="contentMap"column="content_map"typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>

都没有生效

为什么?
因为wrapper 无法利用 MyBatis-Plus 的 JacksonTypeHandler 自动映射
如果你用 String 类型,即使加了 @TableField(typeHandler = JacksonTypeHandler.class),它也会尝试把 Java 对象序列化成 JSON 字符串,但目标字段是 String,可能导致类型不匹配或异常。

解决方案:

@TableName(value="xxx",autoResultMap=true)

让 MP 自动生成带 typeHandler 的 resultMap

@TableName(autoResultMap = true) 是 MyBatis-Plus(MP) 提供的一个非常关键的注解属性,用于自动为实体类生成内联的 resultMap,从而支持如 typeHandler、association、collection 等复杂映射功能。

后面可以试一下这样

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 19:49:34

ioctl命令码构造与解析:项目应用详解

深入理解ioctl命令码&#xff1a;从原理到实战的完整指南在嵌入式Linux开发的世界里&#xff0c;ioctl&#xff08;Input/Output Control&#xff09;是连接用户程序与设备驱动之间的一座关键桥梁。它不像read和write那样处理常规数据流&#xff0c;而是专为那些“无法归类”的…

作者头像 李华
网站建设 2026/4/5 17:20:27

易语言Windows平台「AI大模型集成工具链+本地数据统一分析决策+低代码流程AI自动生成」三重核心深度融合系统

易语言Windows平台「AI大模型集成工具链本地数据统一分析决策低代码流程AI自动生成」三重核心深度融合系统 &#x1f916;⚙️&#x1f4ca; 1.23.1 学习目标 &#x1f3af; 作为《易语言开发从入门到精通》的未来前沿技术整合深化章&#xff0c;本章将整合前22章的全栈技术&am…

作者头像 李华
网站建设 2026/4/12 21:39:23

吐血推荐8个AI论文工具,本科生轻松搞定毕业论文!

吐血推荐8个AI论文工具&#xff0c;本科生轻松搞定毕业论文&#xff01; 论文写作的“救星”来了&#xff0c;AI 工具让你轻松应对毕业挑战 对于大多数本科生来说&#xff0c;毕业论文不仅是一次学术能力的考验&#xff0c;更是一场时间与精力的拉锯战。从选题、查资料到撰写、…

作者头像 李华
网站建设 2026/4/13 12:05:03

haxm is not installed怎么解决:全面讲解兼容性问题

彻底解决“haxm is not installed”问题&#xff1a;从原理到实战的全链路排查指南 在Android开发中&#xff0c;模拟器是我们日常调试不可或缺的工具。然而&#xff0c;当你满怀期待地点击“Run”按钮时&#xff0c;却弹出一条令人头疼的提示&#xff1a;“ HAXM is not ins…

作者头像 李华
网站建设 2026/4/5 9:02:38

零基础掌握rs232串口通信原理图中的电平匹配方法

从零开始搞懂RS232串口通信中的电平转换设计你有没有遇到过这种情况&#xff1a;单片机明明已经写了UART发送代码&#xff0c;引脚也连上了&#xff0c;但PC端的串口助手就是收不到数据&#xff1f;或者更糟——刚一上电&#xff0c;芯片就发烫甚至烧了&#xff1f;如果你用的是…

作者头像 李华
网站建设 2026/4/13 14:12:09

SSL是什么?

一句话概括 SSL 是一种用于在互联网上建立加密链接&#xff0c;确保数据在客户端&#xff08;如你的浏览器&#xff09;和服务器&#xff08;如网站&#xff09;之间安全传输 的技术标准。现在它已升级为更安全的 TLS&#xff0c;但人们仍习惯统称为“SSL”。详细解释&#xff…

作者头像 李华