news 2026/5/10 21:16:48

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/5/8 14:09:36

巧取视图中的所有文档

大家好&#xff0c;才是真的好。 最近用AI写了点LotusScript&#xff0c;表面上强烈地感受到它的工作能力很好很强大&#xff0c;周到又心细。但一运行&#xff0c;全是报错&#xff0c;因为里面用了不少AI自己编写&#xff08;幻觉&#xff09;的属性或方法&#xff0c;例如我…

作者头像 李华
网站建设 2026/5/6 18:10:41

L298N电机驱动H桥电路核心要点:原理图级解析

L298N电机驱动H桥电路深度解析&#xff1a;从原理图到实战调优在机器人、智能小车和自动化设备中&#xff0c;如何让一个直流电机听话地前进、后退、加速或急停&#xff1f;答案往往藏在一个看似简单的黑色模块里——L298N电机驱动板。它背后的核心技术&#xff0c;正是经典的H…

作者头像 李华
网站建设 2026/5/8 18:50:04

SSH是什么?

SSH&#xff08;Secure Shell&#xff0c;安全外壳协议&#xff09; 是一种加密的网络传输协议&#xff0c;用于在不安全的网络&#xff08;如互联网&#xff09;中提供安全的远程登录、命令执行和文件传输等服务。它通过加密和身份验证机制&#xff0c;确保数据传输的机密性和…

作者头像 李华
网站建设 2026/5/7 23:21:24

强烈安利自考必用TOP10 AI论文平台

强烈安利自考必用TOP10 AI论文平台 2026年自考论文写作工具测评&#xff1a;为何需要一份精准榜单&#xff1f; 随着自考人数逐年增长&#xff0c;论文写作成为许多考生面临的“拦路虎”。从选题困难到资料查找繁琐&#xff0c;再到格式规范不熟、改稿效率低下&#xff0c;每一…

作者头像 李华
网站建设 2026/5/10 12:59:28

深度剖析vivado2023.2下载安装教程对Artix-7的支持细节

Vivado 2023.2 还支持 Artix-7 吗&#xff1f;一文讲透安装、配置与实战避坑 你是不是也遇到过这种情况&#xff1a;手头项目还在用 Artix-7&#xff0c;开发板是 Nexys4 或者自研的 xc7a100t&#xff0c;结果想升级到新版 Vivado 却犹豫不决—— 新工具还支不支持老器件&…

作者头像 李华