Kotlin 实战小记:No-Arg 引用解决 No constructor found的问题
一、问题
新的项目试用一下kotlin, 调用数据库查询数据的时候报了这个问题:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.neusoft.collect.entity.cm.CmRoom matching [java.lang.String, java.lang.String, java.lang.String, java.lang.Integer, java.lang.String, java.lang.Double, java.lang.Double]

二、原因
因为使用的是kotlin data class,通过mybatis查询返回不是data class中全部的字段,kotlin创建对象本身是没有无参构造器的,Java默认包含无参构造器;data class 是要返回所有字段,而业务不需要返回所有字段,这是问题出现的所在。
三、处理办法
通过引用No-Arg 插件,官网地址:No-arg compiler plugin | Kotlin Documentation
四、工程样例
注意: <option>no-arg:annotation=com.neusoft.collect.config.NoArg</option> 和 创建的annotation class 路径保持一致
1、maven 部分引包
<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><springfox.swagger3.version>3.0.0</springfox.swagger3.version><kotlin.version>2.0.0</kotlin.version></properties><dependencies><dependency><groupId>org.jetbrains.kotlin</groupId><artifactId>kotlin-maven-noarg</artifactId><version>${kotlin.version}</version></dependency></dependencies><build><plugins><plugin><artifactId>kotlin-maven-plugin</artifactId><groupId>org.jetbrains.kotlin</groupId><version>${kotlin.version}</version><configuration><compilerPlugins> <!-- Or "jpa" for JPA support --><plugin>no-arg</plugin></compilerPlugins><pluginOptions><option>no-arg:annotation=com.neusoft.collect.config.NoArg</option><!-- Call instance initializers in the synthetic constructor --><!-- <option>no-arg:invokeInitializers=true</option> --></pluginOptions> </configuration></plugin></plugins></build>
2、创建 annotation class
package com.neusoft.collect.config/*** @author zc* @date 2024/06/18 10:31* @desc*/
annotation class NoArg
3、data class 样例 引用 annotation class NoArg
package com.neusoft.collect.entity.cmimport com.neusoft.collect.config.NoArg
import java.io.Serializable/*** @author zc* @date 2024/06/05 16:33* @desc 机房*/
@NoArg
data class CmRoom(/*** 多云统一名称*/var mc_uniform_name: String,/*** 详细地址*/var detailed_address: String,/*** 机楼名称*/var building_name: String,/*** 机房所在楼层*/var floor: Int,/*** 机房房间号*/var room_num: String,/*** 机房总行数*/var row_count: Int?,/*** 机房总列数*/var column_count: Int?,/*** 规划机架数*/var project_rack_count: Int?,/*** 占用机架数*/var occupation_rack_count: Int?,/*** 共用情况 枚举值:仅省级云使用、与其他业务共用*/val share_statistic: String = "仅省级云使用",/*** 机房数据维护责任人*/val data_maintain_vendor: String = "李剑春",/*** 关联资源池节点*/var rel_res_pool_id: String,/*** 所属数据中心*/val rel_dc_id: String = "JX001CPC-RP-JX-01",/*** 资源ID*/var resource_id: String
): Serializable
4、mapper 样例: 返回部分字段
/*** Room* 机房* @return*/@Select("SELECT name AS mc_uniform_name," +" address AS detailed_address," +" building_name," +" floor," +" '001' AS room_num," +" CONCAT(#{province}, '004', pool_alias) AS rel_res_pool_id," +" CONCAT(#{province}, '002', instance_id) AS resource_id" +" FROM cm_room_t")@Results(Result(property = "mc_uniform_name", column = "mc_uniform_name"),Result(property = "detailed_address", column = "detailed_address"),Result(property = "building_name", column = "building_name"),Result(property = "room_num", column = "room_num"),Result(property = "rel_res_pool_id", column = "rel_res_pool_id"),Result(property = "resource_id", column = "resource_id"))fun room(province: String): List<CmRoom>
相关文章:
Kotlin 实战小记:No-Arg 引用解决 No constructor found的问题
一、问题 新的项目试用一下kotlin, 调用数据库查询数据的时候报了这个问题:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.neusoft.collect.entity.cm.CmRoom matc…...
HTML(5)——列表表格
列表 无序列表 作用:布局排列整齐的不需要规定顺序的区域。 标签:ul嵌套il,ul是无序列表,li是列表条目 注:ul标签只能包裹li标签,li标签可以包含任何内容 有序列表 作用:布局排列整齐的需…...
FreeBSD通过CBSD管理低资源容器jail来安装Ubuntu子系统实践
简介 FreeBSD、CBSD、Jail和Ubuntu,四者的组合方案可以说是强强联合,极具性价比和竞争力!同时安装简单方便,整体方案非常先进。 CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案…...
SpringCloud总结(springcloud alibaba)
目录 版本说明(很重要) springcloud alibaba对应组件版本说明 简述 spring cloud albaba 几大模块 周会讨论 - spring cloud alibaba每周都会有周会讨论,社区活跃 spring cloud alibaba官网 注册配置中心 简单介绍 nacos 步骤 示例代码 依赖…...
轻轻松松上手的LangChain学习说明书
本文为笔者学习LangChain时对官方文档以及一系列资料进行一些总结~覆盖对Langchain的核心六大模块的理解与核心使用方法,全文篇幅较长,共计50000字,可先码住辅助用于学习Langchain。 一、Langchain是什么? 如今各类AI…...
全面对比与选择指南:Milvus、PGVector、Zilliz及其他向量数据库
本文全面探讨了Milvus、PGVector、Zilliz等向量数据库的特性、性能、应用场景及选型建议,通过详细的对比分析,帮助开发者和架构师根据具体需求选择最合适的向量数据库解决方案。 文章目录 向量数据库概述向量数据库的关键功能向量数据库的扩展和选择向量…...
svm 超参数
https://www.cnblogs.com/ChevisZhang/p/12932674.html https://wenku.baidu.com/view/b8a2c73cfd4733687e21af45b307e87100f6f861.html?wkts1718332423081&bdQuerysvm%E7%9A%84%E8%B6%85%E5%8F%82%E6%95%B0 用交叉验证找到最好的参数 C 和γ 。使用 RBF 核时,…...
001-基于Sklearn的机器学习入门:Sklearn库基本功能和标准数据集
本节将介绍Sklearn库基本功能,以及其自带的几个标准数据集的调用方法。本节是学习后面内容的基础,如果您已经对本节内容相当熟悉,可跳过本节内容。 1.1 Sklearn库基本功能 的 1.2 Sklearn库标准数据集 Sklearn自带许多标准数据集ÿ…...
充电学习—7、BC1.2 PD协议
BC1.2(battery charging)充电端口识别机制: SDP、CDP、DCP 1、VBUS detect:vbus检测 PD(portable device,便携式设备)中有个检测VBUS是否有效的电路,电路有个参考值,高…...
技术点梳理0618
ann建库,分布式建库,性能优化,precision recall参数优化 hnsw,图索引 1. build a)确定层:类似跳表思路建立多层,对每一个插入的节点,random层号l,从图的起始点search_…...
石英砂酸洗提纯方法和工艺
石英砂酸洗提纯方法和工艺是石英砂加工中至关重要的一个环节,其目的是通过化学手段去除石英砂中的杂质,提升其纯度。以下将详细介绍石英砂酸洗提纯的方法和工艺,以便更好地理解和应用这一技术。 一、概述 石英砂酸洗提纯主要是利用酸液对石英…...
linux安装dgl
1.DGL官网、选择与自己cuda、python版本匹配的dgl的whl文件CUDA11.8、python10并下载 2.用pip install运行 pip install /home/u2023170749/download/dgl-2.2.0cu118-cp310-cp310-manylinux1_x86_64.whl或者直接安装https://blog.csdn.net/weixin_44017989/article/details/13…...
【SAP-ABAP】-权限批导-批量给某个角色导入事务码权限
需求:SAP期初上线的时候,业务顾问经常会遇到批量创建角色和分配角色权限的情况 岗位需求:一般是业务顾问定义权限,BASIS进行后期运维,今天讲两个批导功能,方便期初上线 主要函数:PRGN_READ_ROLE…...
异常处理总结
自定义异常 系统中的异常可以分为我们能预知的异常和未知的系统异常,对于我们能预知的异常如空值判断,用户名错误,密码错误等异常我们需要返回客户端,对于系统内部异常如SQL语法错误,参数格式转换错误等需要统一包…...
大模型日报2024-06-18
大模型日报 2024-06-18 大模型资讯 大模型产品 Olvy 3.0:AI加速客户反馈分析 摘要: Olvy 3.0推出AI自动监听和智能标签功能,通过Google Meet集成轻松提取洞察,贴近客户,激发同理心。 PlantIdentify-免费植物识别应用 摘要: PlantI…...
NumPy 双曲函数与集合操作详解
NumPy 双曲函数 NumPy 提供了 sinh()、cosh() 和 tanh() 等 ufunc,它们接受弧度值并生成相应的双曲正弦、双曲余弦和双曲正切值。 示例: import numpy as npx np.sinh(np.pi/2)print(x)示例 找到数组 arr 中所有值的双曲余弦值: import…...
ABSD-系统架构师(十三)
1、CDN和反向代理的基本原理都是()。 A缓存 B负载均衡 C路由转发 DNAT转发 答案:A 2、(必考)在ABSD(基于架构的软件开发)方法中,顶层被分解为()ÿ…...
PLC通过Profibus协议转Modbus协议网关接LED大屏通讯
一、背景 Modbus协议和Profibus协议是两种常用于工业控制系统的通信协议,它们在自动化领域中起着重要的作用。Modbus是一种串行通信协议,被广泛应用于各种设备之间的通信,如传感器、执行器、PLC等。而Profibus则是一种现场总线通信协议&…...
第二十三篇——香农第二定律(二):到底要不要扁平化管理?
目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 对于企业的理解,扁平化的管理,如果从香农第二定律…...
stm32f103 HAL库 HC-SR04测距
目录 一、实现测距二、添加TIM3控制LED根据距离以不同频率闪烁三、观察时序Modebus协议12路超声波雷达设计方案1. 系统架构设计2. 硬件设计3. 软件设计4. 通信协议设计5. 用户接口6. 安全和冗余7. 测试和验证8. 电源和物理封装9. 文档和支持 一、实现测距 配置时钟 配置定时器…...
Laravel集成DeepSeek AI:官方SDK配置与实战指南
1. 项目概述与核心价值最近在折腾一个AI相关的Laravel项目,需要集成一个靠谱的文本生成模型。市面上大模型API不少,但要么贵,要么不稳定,要么就是国内访问延迟感人。直到我发现了deepseek-php/deepseek-laravel这个包,…...
大湾区制造企业品牌突围:从“有品无牌”到价值孵化
当看到2023年凯度BrandZ全球品牌百强榜上苹果以8800亿美元蝉联榜首,14个中国品牌入围时,我们能清晰地感受到品牌价值对企业的重要性。然而,在粤港澳大湾区(广东),众多制造型中小企业面临着尴尬的局面&#…...
hackGPT:基于大语言模型的智能命令行安全工具实践
1. 项目概述:当黑客工具遇上大语言模型最近在安全研究和自动化工具开发的圈子里,一个名为“hackGPT”的项目引起了我的注意。这个由NoDataFound开源的仓库,名字本身就充满了噱头——它将“黑客”(hack)与当下最热的大语…...
学妹问降AI率工具选哪个性价比最高?4款降AI软件1万字花多少过AIGC检测
学妹问降AI率工具选哪个性价比最高?4款降AI软件1万字花多少过AIGC检测 学妹的具体问题 3 月 23 号晚上学妹问我:「学姐我送知网测了 AI 率 65%——市面降 AI 工具一堆我怎么选性价比最高的?预算 300 元以内」。 「性价比最高」是用户最常问…...
Diablo Edit2:终极暗黑破坏神2存档编辑器完全指南
Diablo Edit2:终极暗黑破坏神2存档编辑器完全指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否厌倦了在暗黑破坏神2中反复刷装备的枯燥过程?是否因为技能点分配失…...
3步搞定!MoviePilot智能批量重命名让你的媒体库整齐划一
3步搞定!MoviePilot智能批量重命名让你的媒体库整齐划一 【免费下载链接】MoviePilot NAS媒体库自动化管理工具 项目地址: https://gitcode.com/gh_mirrors/mo/MoviePilot 还在为杂乱的媒体文件名头疼吗?"The.Matrix.1999.1080p.BluRay.x264…...
AI任务管理新范式:结构化描述如何提升人机协作效率
1. 项目概述:一个为AI而生的任务管理范式最近在GitHub上看到一个挺有意思的项目,叫todo-for-ai/todo-for-ai。初看名字,你可能会觉得这又是一个普通的待办事项应用,只不过加了个“AI”的噱头。但当我深入探究其设计哲学和实现细节…...
3分钟快速激活方案:KMS_VL_ALL_AIO智能脚本全解析
3分钟快速激活方案:KMS_VL_ALL_AIO智能脚本全解析 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经为Windows系统或Office办公软件的激活问题而烦恼?频繁的激活…...
SkillZero:零样本AI智能体的分层规划与工具调用实战解析
1. 项目概述:从“零技能”到“零样本”的智能体进化最近在开源社区里,一个名为“SkillZero”的项目引起了我的注意。它来自浙江大学REAL实验室,名字本身就很有意思——“技能为零”。乍一听,这似乎是个悖论,一个智能体…...
NoFences:5分钟彻底告别Windows桌面混乱的开源分区神器
NoFences:5分钟彻底告别Windows桌面混乱的开源分区神器 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天面对杂乱的Windows桌面感到无从下手?…...
