news 2026/7/8 2:39:06

开发中常用问题记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开发中常用问题记录

MyBatis-Plus 插入数据库 JSON 字段完整方案(PostgreSQL / MySQL 两种主流)

一、两种数据库区分

  1. MySQL:字段类型json / jsonb
  2. PostgreSQL:字段类型json / jsonb(你项目用PG)
    核心:自定义类型处理器JacksonTypeHandler,自动 Java对象 ↔ 数据库JSON字符串

二、通用步骤(PG适用)

1. 数据库表字段示例

-- 附件扩展信息,存影像多波段、坐标、元数据杂项ALTERTABLEt_file_attachmentADDCOLUMNext_info JSONB;

2. 实体类

importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;importlombok.Data;importjava.time.LocalDateTime;importjava.util.Map;@DatapublicclassFileAttachment{privateLongid;privateStringoriginalFileName;privateStringfilePath;privateStringsensingTime;/** * 扩展JSON:波段信息、分辨率、四角坐标等 * typeHandler = JacksonTypeHandler.class 自动序列化/反序列化 */@TableField(typeHandler=JacksonTypeHandler.class)privateMap<String,Object>extInfo;// 也可以自定义实体接收JSON// @TableField(typeHandler = JacksonTypeHandler.class)// private TiffExtInfo extInfo;}

3. 自定义JSON实体(可选,替代Map)

importlombok.Data;importjava.math.BigDecimal;@DatapublicclassTiffExtInfo{// 分辨率GSDprivateBigDecimalgsd;// 波段数量privateIntegerbandCount;// 影像宽高privateIntegerwidth;privateIntegerheight;// 四角坐标数组privatedouble[]bounds;}

三、配置全局扫描TypeHandler(无需每个字段写注解)

application.yml

mybatis-plus:configuration:# 开启驼峰转下划线map-underscore-to-camel-case:truetype-handlers-package:com.xxx.xxx.handler

四、插入使用示例

// 1. Map方式FileAttachmentattachment=newFileAttachment();attachment.setOriginalFileName("scene.tif");attachment.setSensingTime("2026-07-07T02:10:30Z");Map<String,Object>ext=newHashMap<>();ext.put("gsd",0.8);ext.put("bandCount",4);ext.put("width",10000);ext.put("height",8000);attachment.setExtInfo(ext);// MP直接插入,自动序列化为jsonb存入PGattachmentService.save(attachment);
// 2. 自定义实体对象方式TiffExtInfotiffExt=newTiffExtInfo();tiffExt.setGsd(newBigDecimal("0.8"));tiffExt.setBandCount(3);tiffExt.setBounds(newdouble[]{116.3,39.9,116.5,40.1});attachment.setExtInfo(tiffExt);attachmentService.save(attachment);

五、查询自动转对象

FileAttachmentfile=attachmentService.getById(1L);Map<String,Object>extMap=file.getExtInfo();// 或强转自定义实体// TiffExtInfo info = file.getExtInfo();

六、常见坑(PG重点)

  1. 报错:无法转换类型 text to jsonb
    • 实体必须加@TableField(typeHandler = JacksonTypeHandler.class)
    • 或全局注册typeHandler包
  2. 更新JSON局部字段(MP Lambda)
Map<String,Object>newExt=newHashMap<>();newExt.put("gsd",1.0);attachmentService.lambdaUpdate().set(FileAttachment::getExtInfo,newExt).eq(FileAttachment::getId,1L).update();
  1. JSONB条件查询(PG特有)
// 查询gsd=0.8的影像LambdaQueryWrapper<FileAttachment>wrapper=Wrappers.lambdaQuery();wrapper.apply("ext_info ->> 'gsd' = '0.8'");List<FileAttachment>list=attachmentService.list(wrapper);

七、Maven依赖(必须有jackson)

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><!-- jackson序列化依赖,否则JacksonTypeHandler失效 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 2:37:54

从零构建智能虚拟助手:对话系统设计与Python实现

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 在实际项目开发中&#xff0c;我们经常需要为系统设计一个友好的交互界面&#xff0c;其中虚拟助手或系统管理员角色是提升用户体验的…

作者头像 李华
网站建设 2026/7/8 2:34:28

STM32CubeIDE绚丽小灯

2245272269qq.com先点击STM32CubeIDE左上角的File&#xff0c;新建一个工程然后搜索你使用的芯片&#xff0c;可以添加收藏&#xff0c;点击那个五角星&#xff0c;然后点灯的原理图如图&#xff0c;进入芯片页面后&#xff0c;给PA7变成GPIO口相比于单色灯&#xff0c;这次把把…

作者头像 李华
网站建设 2026/7/8 2:33:56

SpringReport开源项目深度解析:集报表设计、大屏可视化与在线Excel于一体的企业级数据报表解决方案实战指南

SpringReport开源项目深度解析&#xff1a;集报表设计、大屏可视化与在线Excel于一体的企业级数据报表解决方案实战指南 在企业级应用开发中&#xff0c;数据展示与报表生成往往是耗时耗力的环节。传统的开发模式需要后端编写复杂的SQL&#xff0c;前端调整繁琐的样式&#xff…

作者头像 李华
网站建设 2026/7/8 2:32:58

模型量化 INT8 实战:PyTorch 静态量化 3 步实现 ResNet-18 推理加速 2.5 倍

PyTorch INT8 静态量化实战&#xff1a;3步实现ResNet-18推理速度提升2.5倍当我们在移动设备或边缘计算场景部署深度学习模型时&#xff0c;模型的计算效率和内存占用往往成为瓶颈。上周在部署一个图像分类服务时&#xff0c;原始FP32模型在树莓派上的推理延迟高达380ms&#x…

作者头像 李华
网站建设 2026/7/8 2:28:42

变频器与伺服系统的噪声战争:07 伺服编码器为什么最怕变频器?

第七篇:伺服编码器为什么最怕变频器? 深夜车间里,当变频器密集运行时,伺服电机有时会突然出现轻微的抽动。操作台上,位置反馈值开始漂移,编码器报警灯闪烁,PLC很快报出“位置偏差过大”或“同步丢失”。 很多工程师第一反应是“编码器坏了”,赶紧换一个新的。可换完之…

作者头像 李华