Mybatis 查询TypeHandler使用,转译查询数据(逗号分隔转List)
创建自定义的Hanndler
/*** @Package: com.datalyg.common.core.handler* @ClassName: CommaSeparatedStringTypeHandler* @Author: dujiayu* @Description: 用于mybatis 解析逗号拼接字符串* @Date: 2024/5/29 10:03* @Version: 1.0*/
public class CommaSeparatedStringTypeHandler extends BaseTypeHandler<List<String>> {@Overridepublic void setNonNullParameter(PreparedStatement preparedStatement, int i, List<String> strings, JdbcType jdbcType)throws SQLException {if (strings != null) {preparedStatement.setString(i, String.join(",", strings));} else {preparedStatement.setNull(i, jdbcType.TYPE_CODE);}}@Overridepublic List<String> getNullableResult(ResultSet resultSet, String s) throws SQLException {String result = resultSet.getString(s);return convertStringToList(result);}@Overridepublic List<String> getNullableResult(ResultSet resultSet, int i) throws SQLException {String result = resultSet.getString(i);return convertStringToList(result);}@Overridepublic List<String> getNullableResult(CallableStatement callableStatement, int i) throws SQLException {String result = callableStatement.getString(i);return convertStringToList(result);}private List<String> convertStringToList(String input) {if (input == null || input.isEmpty()) {return null;}return Arrays.asList(input.split(","));}
}
配置YML文件
# Spring
spring:mybatis:type-handlers-package: com.datalyg.common.core.handler
Mybatis XML查询写法
<resultMap id="VehicleInspectionBindConfigResultMap"type="com.datalyg.integration.vo.vehicle_inspection.VehicleInspectionInfoConfigItemVO"><result property="configId" column="id"/><result property="sort" column="sort"/><result property="inspectionMode" column="inspection_mode"/><result property="inspectionContent" column="inspection_content"/><result property="accessCriteria" column="access_criteria"/><result property="inspectionResult" column="inspection_result"/><result property="causeNonconformity" column="cause_nonconformity"/><result property="imageUrls" column="image_url" javaType="java.util.List" jdbcType="VARCHAR"typeHandler="com.datalyg.common.core.handler.CommaSeparatedStringTypeHandler"/></resultMap><select id="selectVehicleInspectionBindConfigList" resultMap="VehicleInspectionBindConfigResultMap">SELECT x.id,x.sort,x.inspection_mode,x.inspection_content,x.access_criteria,x.inspection_result,x.cause_nonconformity,x.image_urlFROM wh_vehicle_inspection_config_bind xWHERE x.vehicle_inspection_id = #{id}ORDER BY x.sort</select>
其中x.image_url为逗号拼接的字符串,转为List<String>集合返回
<result property="imageUrls" column="image_url" javaType="java.util.List" jdbcType="VARCHAR"typeHandler="com.datalyg.common.core.handler.CommaSeparatedStringTypeHandler"/>
通过此方法与自定义的TypeHandler关联,实现转译操作


相关文章:
Mybatis 查询TypeHandler使用,转译查询数据(逗号分隔转List)
创建自定义的Hanndler /*** Package: com.datalyg.common.core.handler* ClassName: CommaSeparatedStringTypeHandler* Author: dujiayu* Description: 用于mybatis 解析逗号拼接字符串* Date: 2024/5/29 10:03* Version: 1.0*/ public class CommaSeparatedStringTypeHandle…...
易查分小程序|如何开启个人密钥功能?
一般情况下发布查询,用姓名和手机尾号等作为查询条件就足够了,如果查询需要的私密性要求很高,可以使用易查分的【个人密钥】功能,下面就来教大家如何制作吧。 🔑个人密钥功能的特点: ✅学生家长可以自主修…...
NoSQL是什么?NoSQL数据库存在SQL注入攻击?
一、NoSQL是什么? NoSQL(Not Only SQL)是一种非关系型数据库的概念。与传统的关系型数据库不同,NoSQL数据库使用不同的数据模型来存储和检索数据。NOSQL数据库通常更适合处理大规模的非结构化和半结构化数据,且能够…...
成功解决“ImportError: cannot import name ‘mapping‘ from ‘collections‘”错误的全面指南
成功解决“ImportError: cannot import name ‘mapping’ from ‘collections’”错误的全面指南 成功解决“ImportError: cannot import name ‘mapping’ from ‘collections’”错误的全面指南 一、引言 在Python编程中,当我们尝试从某个模块中导入某个名称时&…...
apexcharts数据可视化之圆环柱状图
apexcharts数据可视化之圆环柱状图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基础圆环柱状图多组数据圆环柱状图图片背景自定义角度渐变半个圆环图虚线圆环图 基础圆环图 import ApexChart from react-apexcharts;export function Cir…...
2024ciscn初赛——easycms
什么是CMS? CMS是“Content Management System”的缩写,意为“内容管理系统”。网站的开发者为了方便,制作了不同种类的CMS,可以加快网站开发的速度和减少开发的成本。 常见的CMS: php类cms系统:dedecms、…...
融合神话传说:构建公共开放平台的技术探索
当今科技发展日新月异的时代,我们越来越意识到跨文化的融合和开放共享的重要性。在这篇博客中,我们将探讨如何利用国外与国内古代神兽和神话故事的灵感,来设计一个创新的公共开放平台。 源自神话的灵感 古代神兽在不同文化中都扮演着重要角色…...
鸿蒙应用Stage模型【应用/组件级配置】
应用/组件级配置 在开发应用时,需要配置应用的一些标签,例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。 应用包名配置 应用需要在工程的AppScope目录下的[app.json5配置文件]中配置bundleName标签,…...
Python魔法之旅-魔法方法(05)
目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…...
机器学习笔记(1):sklearn是个啥?
sklearn 简介 Sklearn是一个基于Python语言的开源机器学习库。全称Scikit-Learn,是建立在诸如NumPy、SciPy和matplotlib等其他Python库之上,为用户提供了一系列高质量的机器学习算法,其典型特点有: 简单有效的工具进行预测数据分…...
C++与C语言 通过指针改变const变量的值
一、问题描述 当一个变量声明为const时,通常是不可以改变它的值的,程序设计过程中也不应该这么做。 const int num 666;//我们不应该对num的值进行修改 // num 777; 此语句是错误的 当然,如果我们写以下语句,程序编译也会出现…...
OpenJDK优化技术之标量替换(Scalar Replacement)
标量替换 (SR) 是 OpenJDK 中一项强大的优化技术,旨在通过将复杂对象分解为更简单、更易于管理的标量变量来提高 Java 应用程序的性能。 1.前言 OpenJDK JVM 有两个即时编译器,C1 和 C2。C2 是一种应用许多优化来生成非常高效的编译版本程序的编译器。…...
优思学院|研发工程师获取六西格玛证书有用吗?
在现代的工业领域中,研发工程师不仅需要具备强大的技术能力,还需要掌握有效的管理方法,以确保产品的高质量和高效开发。六西格玛(Six Sigma)作为一种系统的质量管理方法,已经被广泛应用于各种行业。对于研发…...
C++第二十二弹---vector深度剖析及模拟实现(下)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、容量操作 2、内容修改操作 3、打印函数 4、迭代器失效 4.1、什么是迭代器失效 4.2、哪些操作会引起迭代器失效 总结 1、容量操作 size()…...
GD32F470+lwip 丢包问题分析及解决
最近在用GD32和管理机之间用TCP协议开发一个功能,功能都没问题,后面跑大量发包时候的连续测试时,总是会出现偶发性的,大概几分钟到数十分钟的一次丢包。尽管在应用层做了超时机制,一旦超时就会重新建立socket链接并重新…...
好用的电子杂志制作平台分享
随着数字媒体的发展,电子杂志逐渐成为了一种流行的新媒体形式。它不仅能够吸引读者的眼球,还能够帮助创作者展示自己的才华。现在,许多电子杂志制作平台应运而生,让创作者可以轻松地制作出高质量的作品。 今天就给大家推荐一款好用…...
“云原生安全:构建弹性且安全的云上环境的关键要素“
云原生安全是指在设计和实施云原生应用时,从一开始就将安全性融入到每一个环节,确保云环境既具备弹性又安全可靠。构建一个既弹性又安全的云上环境,关键要素包括以下几个方面: 1. 微服务架构:采用微服务架构可以提高系…...
燃气安全阀检验维修:守护家庭安全的必备知识
燃气作为现代生活中不可或缺的重要能源,其安全使用直接关系到人民群众的生命财产安全。 燃气安全阀作为保障燃气系统安全运行的关键部件,一旦发生泄露,必须迅速采取有效措施进行排查、检验、维修,并建立长效机制进行预防和维护。…...
【JavaEE】多线程(1)
🎆🎆🎆个人主页🎆🎆🎆 🎆🎆🎆JavaEE专栏🎆🎆🎆 🎆🎆🎆计算机是怎么工作的🎆dz…...
相对位姿估计
相对位姿估计 示意图 理论推导 离线数据库: P的位置 P [ X , Y , Z ] T P[X,Y,Z]^{T} P[X,Y,Z]T 相机内参 k 1 k_{1} k1 安卓手机: 相机内参 k 2 k_{2} k2 两个像素点位置 : p 1 和 p 2 p_1和p_2 p1和p2 公式一:…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
