pgsql中处理数组类型字段
1、代码中存入和读取
需要使用自定义转换器
@Slf4j
public class ArrayTypeHandler extends BaseTypeHandler<List<String>> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType)throws SQLException {Object[] objects = parameter.toArray();Array array = ps.getConnection().createArrayOf("varchar", objects);ps.setArray(i, array);}@Overridepublic List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {return getArray(rs.getArray(columnName));}@Overridepublic List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {return getArray(rs.getArray(columnIndex));}@Overridepublic List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {return getArray(cs.getArray(columnIndex));}private List<String> getArray(Array array) {if (array == null) {return null;}try {String[] objects = (String[]) array.getArray();return Arrays.asList(objects);} catch (SQLException e) {log.error("sql转换失败");}return null;}
}
本项目使用的ORM框架是mybatis-flex 在字段上添加注解
@Column(jdbcType = JdbcType.ARRAY,typeHandler = ArrayTypeHandler.class)private List<String> swlToCnIds;
然后正常插入、查询即可
2、sql中使用数组属性字段
- 使用any函数
// 是否包含
value = ANY(array)
// 是否有大于值
value > ANY(array)
// 小于同理
value < ANY(array)
// 是否有不等于的
value <> ANY(array)
any和关联查询一起使用
SELECT b.*,string_agg(DISTINCT s1.name, ',' order by s1.name) as sw_to_bts,string_agg(DISTINCT s2.name,',' order by s2.name) as sw_to_cn
FROM t_ne_mgr_bsc b
LEFT JOIN t_ne_switch_mgr s1 ON s1.id = ANY(b.swl_to_bts_ids)
LEFT JOIN t_ne_switch_mgr s2 ON s2.id = ANY(b.swl_to_cn_ids)
WHERE b.removed = false
group by b.id
关联查询的结果用函数string_agg聚合 拼接成为一个新字段
(因为id是主键,因此其它列不用写在group by 里面)
相关文章:
pgsql中处理数组类型字段
1、代码中存入和读取 需要使用自定义转换器 Slf4j public class ArrayTypeHandler extends BaseTypeHandler<List<String>> {Overridepublic void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType)throws SQL…...
如何正确定位前后端bug?
在平时的开发过程中,正确定位前后端bug是提高开发效率和项目质量的关键。以下是一些实用的方法。 一、前后端bug 特征 前端主要负责显示数据,后端主要负责处理数据、存储数据,前后端主要通过接口进行数据交换。 1.前端bug特征 界面显示类…...
mfc操作json示例
首先下载cJSON,加入项目; 构建工程,如果出现, fatal error C1010: unexpected end of file while looking for precompiled head 在cJSON.c文件的头部加入#include "stdafx.h"; 看情况,可能是加到.h或者是.cpp文件的头部,它如果有包含头文件, #include &…...
【技术总结类】2024,一场关于海量数据治理以及合理建模的系列写作
目录 1.今年的创作路线 2.先说第一条线 2.1.由日志引出的海量文本数据存储和分析问题 2.2.监控以及监控的可视化 2.3.数据量级再往上走牵扯出了大数据 2.4.由大数据牵扯出的JAVA线程高级内容 3.第二条线,也是2025要继续的主线 1.今年的创作路线 今年的写作内…...
Dockerfile另一种使用普通用户启动的方式
基础镜像的Dockerfile # 使用 Debian 11.9 的最小化版本作为基础镜像 FROM debian:11.11# 维护者信息 LABEL maintainer"caibingsen" # 复制自定义的 sources.list 文件(如果有的话) COPY sources.list /etc/apt/sources.list # 创建…...
python的pushbullet库在设备之间发送通知链接文件
Pushbullet 是一个非常方便的 Python 库,可以帮助你在设备之间发送通知、链接、文件等。以下是 Pushbullet 的一些主要功能和使用方法: 功能 与你的 Pushbullet 账户关联的设备(需要下载对应的pushbullet手机APP、电脑客户端)之…...
STM32之FreeRTOS开发介绍(十九)
STM32F407 系列文章 - freertos(十九) 目录 前言 一、简述 二、开源网址 三、原理及功能特性 1.原理简介 2.功能介绍 1.任务调度 2.任务管理 3.中断管理 4.消息队列 3.特点说明 4.优缺点 四、参考书籍 五、实现方式 总结 前言 FreeRTOS是…...
用java配合redis 在springboot上实现令牌桶算法
令牌桶算法配合 Redis 在 Java 中的应用令牌桶算法是一种常用的限流算法,适用于控制请求的频率,防止系统过载。结合 Redis 使用可以实现高效的分布式限流。 一.、引入依赖首先,需要在 pom.xml 文件中引入 spring-boot-starter-data-re…...
DCGAN - 深度卷积生成对抗网络:基于卷积神经网络的GAN
深度卷积生成对抗网络(DCGAN,Deep Convolutional Generative Adversarial Network)是生成对抗网络(GAN)的一种扩展,它通过使用卷积神经网络(CNN)来实现生成器和判别器的构建。与标准…...
51c~SLAM~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12327374 #GSLAM 自动驾驶相关~~~ 一个通用的SLAM架构和基准 GSLAM:A General SLAM Framework and Benchmark 开源代码:https://github.com/zdzhaoyong/GSLAM SLAM技术最近取得了许多成功&am…...
优化使用 Flask 构建视频转 GIF 工具
优化使用 Flask 构建视频转 GIF 工具 优化后的项目概述 在优化后的版本中,我们将实现以下功能: 可设置每个 GIF 的帧率和大小:用户可以选择 GIF 的帧率和输出大小。改进的用户界面:使用更现代的设计使界面更美观、整洁。自定义…...
spring cloud如何实现负载均衡
在Spring Cloud中,实际上并没有直接支持lb:\\这样的URL前缀来自动解析为负载均衡的服务地址。lb:\\这样的表示可能是在某些特定框架、文档或示例中自定义的,但它并不是Spring Cloud官方API或规范的一部分。 Spring Cloud实现负载均衡的方式通常依赖于服…...
leetcode19-删除链表的第n结点
leetcode 19 思路 要删除倒数第n个元素,那么就要找到倒数第n1个元素,那么我们需要两个指针来记录,首先快指针需要先走n1步,然后快慢指针一起进行移动,直到快指针为null的时候,此时慢指针恰好走到倒数第n…...
软件测试—— 接口测试(HTTP和HTTPS)
软件测试—— 接口测试(HTTP和HTTPS) HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头(Request Headers)示例请求标头 响应标头(Response Header…...
3.1 Go函数调用过程
在 Go 语言中,函数调用的核心机制依赖于内存的栈区分配和指针操作,理解这一原理有助于掌握函数的执行过程。 1. 内存结构概述 在 Go 程序编译成可执行文件并启动后,操作系统会为其分配进程内存,进程内存主要分为以下区域&#x…...
TDengine 做 Apache SuperSet 数据源
Apache Superset 是一个现代的企业级商业智能(BI)Web 应用程序,主要用于数据探索和可视化。它由 Apache 软件基金会支持,是一个开源项目,它拥有活跃的社区和丰富的生态系统。Apache Superset 提供了直观的用户界面…...
08_游戏启动逻辑
1.GameRoot.cs 控制 服务层Svc.cs 和业务层Sys.cs 的初始化 创建脚本GameRoot.cs(游戏入口 已进入就初始化各个系统) 创建资源加载服务.cs Res 将服务层Svc设置成单例类所以需要挂载在GameRoot身上,这样就可以通过GameRoot来调各个服务 接…...
Ardupilot开源无人机之Geek SDK进展2024-2025
Ardupilot开源无人机之Geek SDK进展2024-2025 1. 源由2. 状态3. TODO3.1 【进行中】跟踪目标框3.2 【暂停】onnxruntime版本3.3 【完成】CUDA 11.8版本3.4 【完成】pytorch v2.5.1版本3.5 【未开始】Inference性能3.6 【未开始】特定目标集Training 4. Extra-Work4.1 【完成】C…...
在K8S中,如果后端NFS存储的IP发送变化如何解决?
在Kubernetes中,如果后端NFS存储的IP地址发生了变化,您需要更新与之相关的Peristent Volume(PV)或Persistent Volume Claim(PVC)以及StorageClass中关于NFS服务器IP的配置信息,确保K8S集群内的Pod能够正确连接到新的NFS存储位置。解决方案如下…...
模拟飞行入坑(五) P3D 多通道视角配置 viewgroup
背景: P3D进行多个屏幕显示的时候,如果使用英伟达自带的屏幕融合成一个屏,或者使用P3D单独拉伸窗口,会使得P3D的画面被整体拉伸,又或者,当使用Multichannel进行多个设备联动时,视角同步组合需要配置&#…...
最通俗的 LDA 线性判别分析教程
🔥 最通俗的 LDA 线性判别分析教程(本科生/研究生都能懂) 大家好,今天我们来彻底吃透LDA(线性判别分析)。 这是机器学习、模式识别、数据降维里必考、必用、必懂的算法,面试、比赛、写论文都高频…...
新手必看!手把手教你搭建微调大模型环境,附硬件配置与工具链教程
本文详细介绍了微调大模型的环境搭建与工具链配置,包括硬件要求(不同模型所需显存及推荐显卡)、核心依赖安装(transformers、peft、bitsandbytes等)、Hugging Face生态速览(模型、数据集、Trainerÿ…...
7个OpenClaw+Phi-3-vision-128k-instruct实用场景:从学术研究到内容创作
7个OpenClawPhi-3-vision-128k-instruct实用场景:从学术研究到内容创作 1. 引言:当多模态模型遇上自动化框架 第一次看到Phi-3-vision-128k-instruct模型解析PDF论文中的图表并生成完整分析报告时,我就意识到这不再是简单的"看图说话&…...
别再瞎调参了!HuggingFace Trainer微调BERT/ViT的保姆级避坑指南(附ArcFace实战代码)
HuggingFace Trainer微调实战:从参数陷阱到模型优化的深度拆解 当你第5次看到验证集准确率在0.85附近震荡不前,而训练损失仍在持续下降时,是否开始怀疑自己选择的优化器、学习率或损失函数?这不是个例——超过60%的NLP工程师在使用…...
基因组调查实战:KMC+GenomeScope2.0多倍体分析全流程解析
1. 为什么需要基因组调查? 当你第一次拿到一个未知物种的测序数据时,最头疼的问题往往是:这个基因组到底有多大?复杂度如何?该投入多少测序量才够用?这就好比装修房子前要先量尺寸,基因组调查就…...
OpenClaw自动化竞赛:Qwen3.5-9B在不同任务中的表现对比
OpenClaw自动化竞赛:Qwen3.5-9B在不同任务中的表现对比 1. 测试背景与实验设计 最近我在本地部署了OpenClaw框架,并接入Qwen3.5-9B模型进行了一系列自动化任务测试。作为一个长期关注AI自动化落地的开发者,我很好奇这款90亿参数的模型在实际…...
嵌入式开发中的代码生成器设计与实践
1. 嵌入式代码生成器设计思路解析作为一名在嵌入式领域摸爬滚打多年的开发者,我深刻体会到重复编码带来的效率瓶颈。最近完成的一个代码生成器项目,让我从繁琐的相似代码编写中解放出来。这个工具的核心价值在于:它能自动生成那些结构固定但需…...
2026.4.7总结
工作日精进:这个月在心声上看到许多离职的帖子,估计是有很多拿完年终奖离职的。看到别人写的离职感悟,我多少有些共情。当有一天,我离职的时候,我也要写一篇长篇大论。早上HR跟入职一两年的人解读了esop相关政策。这政…...
高效跨平台喜马拉雅音频下载器:Go+Qt5技术架构深度解析
高效跨平台喜马拉雅音频下载器:GoQt5技术架构深度解析 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 喜马拉雅FM作为国…...
菜鸟的逆向工程学习之路——逆向工程基本介绍
菜鸟的逆向工程学习之路——逆向工程基本介绍 菜鸟的逆向工程学习之路——逆向工程基本介绍 逆向工程是一种分析目标系统的过程,旨在识别系统的各组件以及组件间关系,以便能够通过其他形式或在较高的抽象层次上,重建系统的表征。 逆向工程一直…...
