MyBatis-For input string: “oqm“ 异常

前言

        具体的异常信息如下:

        Error attempting to get column 'open_id' from result set.  Cause: java.lang.NumberFormatException: For input string: "oqmJX5ZPU1KOv-YDt30GNAN-Zefk"

       

        乍一看下其实就是无法把open_id字符串类型转为数字类型进行赋值,但是如果没有碰到这个问题可能一时半会还找不到问题的所在,原因在下面细说

代码

@Data
@TableName(value = "login_user")
@ApiModel(value="LoginUser对象", description="玩家账号表")
public class LoginUser implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "id", type= IdType.AUTO)@ApiModelProperty(value = "主键ID-自增")private Long id;@ApiModelProperty(value = "创建时间")private Long createTime;@ApiModelProperty(value = "平台")private String platform;@ApiModelProperty(value = "玩家account")private String openId;@ApiModelProperty(value = "渠道")private String channel;@ApiModelProperty(value = "玩家分区id")private Long serverId;@ApiModelProperty(value = "玩家pwd")private String pwd;@ApiModelProperty(value = "内部服务器主键id")private Long gameServerId;public LoginUser(String openId, String platform, String channel, Long serverId) {this.openId = openId;this.platform = platform;this.channel = channel;this.serverId = serverId;}
}
CREATE TABLE `login_user` (`id` bigint(20) NOT NULL COMMENT 'userID',`open_id` varchar(64) NOT NULL DEFAULT '' COMMENT '玩家account',`platform` varchar(64) NOT NULL DEFAULT '' COMMENT '平台',`channel` varchar(255) DEFAULT NULL COMMENT '渠道',`server_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '玩家分区id',`game_server_id` bigint(20) DEFAULT NULL COMMENT '关联的服务器主键id',`create_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '创号时间',`account` varchar(64) NOT NULL DEFAULT '' COMMENT '玩家account',`pwd` varchar(64) NOT NULL DEFAULT '' COMMENT '玩家pwd',PRIMARY KEY (`id`),KEY `idx_open_id` (`open_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='玩家账号表';

  控制器

@GetMapping("/test")
public LoginUser test(@RequestParam("id") Long id) {LoginUser byId = loginUserService.getById(id);return byId;
}

就是通过id获取对象,注:这里需要一定的Java基础,这部分内容不在本篇文章讨论以内

如图所示,如果去访问这个接口会报以下的错

Error attempting to get column 'open_id' from result set.  Cause: java.lang.NumberFormatException: For input string: "oqmJX5ZPU1KOv-YDt30GNAN-Zefk"

但是你可以很清楚的看到openId的定义为字符串,数据库的字段定义为varchar,类型是能匹配上的

问题解决

 方法1-治标不治本       

把  @ApiModelProperty(value = "创建时间")
    private Long createTime;

字段放到了id前面,再访问就正常了,这种方式虽然可以解决,但是指不定又出现其他问题,所以必须从根源进行问题解决

方法2-根源问题

        如果要找到根源问题只能去看源码流程,看看到底是哪一步出错了,由于不知道具体问题出现在哪里,那就只能debug一步步去看哪里出错,然后去看到具体的原因,这部分需要一定的源码阅读能力,这里也主要是贴上观看的大概流程,以及最核心的问题所在稍微描述一下,整体的流程走向一篇文章肯定是说不完的

一些源码的截图

问题其实就是在handleResultSet方法里,可以看到我还打着断点

接着又是一顿追踪

最终定位到问题位置如下

描述:就是因为找到了其他的构造器,导致第4个参数是要整形,但是open_id是字符串,无法转换过来引起了报错,可以再看看LoginUser的定义,是不是这样的,只放核心的

@Data
@TableName(value = "login_user")
@ApiModel(value="LoginUser对象", description="玩家账号表")
public class LoginUser implements Serializable {public LoginUser(String openId, String platform, String channel, Long serverId) {this.openId = openId;this.platform = platform;this.channel = channel;this.serverId = serverId;}
}等于LoginUser只有一个构造器,我们需要为LoginUser添加一个无参的构造器

加上以后就正常了

总结

        问题的本质就是因为少了无参构造器引起的,有参那个第四个参数刚好是数字类型的,openId为第四个肯定是设置不进去的

        虽然问题并不复杂,但是下次如果看到类型的错误就多了一个思考的方向,也算是一个小经验了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch RestclientApi基础用法

Elasticsearch RestclientApi基础用法 索引 初始化 添加依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>创建链接 package com.hmall.i…

synchronized原理

当线程释放锁&#xff0c;JMM会把线程对应的本地的内存中的共享变量刷新到内存中 当线程获取锁&#xff0c;JMM会帮其他线程中对应的本地的内存中的共享变量设置未无效&#xff0c;从而监视器保护的临界区的代码必须从内存中读取共享变量。&#xff08;临界区为锁之间的代码&am…

3D模型可视化引擎HOOPS Communicator与Visualize的统一化文件加载解决方案

在当今数字化时代&#xff0c;3D可视化技术已成为工程设计、建筑规划和游戏开发等多个领域的核心技术。Tech Soft 3D公司凭借其创新的HOOPS Communicator和HOOPS Visualize两款开发包&#xff0c;分别针对Web端和桌面端提供了强大的3D可视化解决方案。然而&#xff0c;由于两者…

第三集《唯识与净土》

和尚尼慈悲&#xff01;诸位法师、诸位居士&#xff0c;阿弥陀佛&#xff01; 请大家打开讲义第六面&#xff0c;三、业果强弱。 我们身为一个有情众生&#xff0c;在我们的生命当中&#xff0c;我们曾经出现过很多痛苦的果报&#xff0c;当然也出现过很多安乐的果报&#xff0…

c语言回顾-结构体(2)

前言 前面讲了结构体的概念&#xff0c;定义&#xff0c;赋值&#xff0c;访问等知识&#xff0c;本节内容小编将讲解结构体的内存大小的计算以及通过结构体实现位段&#xff0c;话不多说&#xff0c;直接上干货&#xff01;&#xff01;&#xff01; 1.结构体内存对齐 说到计…

物联网技术-第3章物联网感知技术-3.2定位技术

目录 1.1位置信息和位置服务 1.1.1位置信息 1.1.2位置服务 1.2主流定位系统 1.2.1卫星定位系统&#xff08;Satellite Positioning Systems&#xff09; 1.2.2移动通信蜂窝基站定位&#xff08;Cellular Triangulation or Advanced Forward Link Trilateration&#xff09…

大学物理绪论组收集和分析

目录 ​编辑 随机误差的估计 算术平均值的标准偏差 不确定度&#xff08;Uncertainty&#xff09;是测量学中的一个重要概念&#xff0c;用于表示测量结果的可靠程度。它反映了测量值可能偏离真值&#xff08;即被测量的客观真实值&#xff09;的程度。 A类不确定度的计算方…

cephfs的形式使用ceph,大致思路

有很多方式可以使用ceph&#xff0c;感觉作者的大概的思路就是&#xff0c;把ceph当成一个存储中心&#xff0c;然后可以通过很多中不同的方式把数据放到这个存储中心来&#xff0c;也可以读取。 ceph存储数据的大致思路是&#xff0c;建立osd&#xff0c;把osd当数据存储基点…

健身小程序:智能化助力个人健身旅程

一、智能化功能的核心 健身小程序的智能化功能主要体现在以下几个方面&#xff1a; 智能健身计划推荐&#xff1a;小程序内置了先进的算法&#xff0c;能够根据用户的身体状况、健身目标和时间安排&#xff0c;智能推荐个性化的健身计划。这些计划不仅科学合理&#xff0c;而且…

TCP协议是安全的吗?

不安全 虽然 TCP 提供了一种可靠且高效的数据传输方式&#xff0c;但它不提供任何加密或身份验证机制来保护数据。因此&#xff0c;传输的数据可能会被未经授权的用户拦截和读取&#xff0c;而且其真实性无法验证。 因此&#xff0c;为了确保 TCP 通信的安全&#xff0c;必须…

ThreeJS-截屏下载pdf或者图片时白屏

JS-页面截图下载为pdf 关于如何下载为 pdf 在上面的这篇文章中有写&#xff0c;大家可以看下&#xff0c;下载图片代码在最下面 这时我们发现 three 部分是空白的如下&#xff1a; 这就多少有点尴尬了&#xff0c;这时我们习惯性的看下后台报错 是不是发现了惊喜&#xff0c;…

足底筋膜炎怎么治疗效果好得快

足底筋膜炎症状&#xff1a;疼痛是足底筋膜炎最典型和常见的症状。患者通常会感到足跟或足底区域的疼痛&#xff0c;这种疼痛可能表现为刺痛、钝痛或灼热感。疼痛的程度和频率因人而异&#xff0c;但通常会在早晨起床后或长时间休息后首次站立时最为明显。这是因为休息时足底筋…

.NET C# 读写CSV及转换DataTable

目录 .NET C# 读写CSV及转换DataTable1. 依赖库2. CSVUtil2.1 CSV 转 DataTable2.2 DataTable 转 CSV 文本2.3 DataTable 转 CSV2.4 私有方法 .NET C# 读写CSV及转换DataTable 1. 依赖库 using System.Data; using System.IO; using System.Text; using System.Text.RegularE…

eclipse宝刀未老

Theia 是一个高度可定制的、开源的、基于 Web 的集成开发环境&#xff08;IDE&#xff09;框架。它由 Eclipse Foundation 主导&#xff0c;旨在为云和本地环境提供现代化的、全功能的 IDE 解决方案。Theia 的核心目标是提供一个灵活的平台&#xff0c;开发者可以根据自己的需求…

睡眠脑电 | 多导睡眠图技术

摘要 多导睡眠图(PSG)一词由Holland等人于1974年提出&#xff0c;用于描述在睡眠期间同时记录、分析和解释多个生理特征。PSG是诊断睡眠障碍患者和增进我们对正常睡眠认识的重要工具。这是一个复杂的过程&#xff0c;应由训练有素的技术人员执行。本文回顾了多导睡眠图(PSG)的…

头歌----恶意流量监测

第一关&#xff1a;RE库的使用 任务描述 本关任务&#xff1a;编写一个能正则匹配出 ip 地址的小程序。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; re 的主要功能函数&#xff1b;re.search 函数&#xff1b;例子。 re 的主要功能函数 常用的功能函…

【设计模式之基于特性的动态路由映射模式】

在ASP.NET Core中&#xff0c;路由是核心功能之一&#xff0c;用于将HTTP请求映射到相应的控制器操作。虽然“路由驱动设计模式”是一个我刚杜撰出来的设计模式名称&#xff0c;但我们可以基于ASP.NET Core的路由特性&#xff0c;构建一种以路由为中心的设计模式。 以下是一个…

C#.Net筑基-类型系统②常见类型

01、结构体类型Struct 结构体 struct 是一种用户自定义的值类型&#xff0c;常用于定义一些简单&#xff08;轻量&#xff09;的数据结构。对于一些局部使用的数据结构&#xff0c;优先使用结构体&#xff0c;效率要高很多。 可以有构造函数&#xff0c;也可以没有。因此初始…

独孤思维:副业闷声发财,没有多少人希望你好

01 做副业&#xff0c;一定要留有余地。 害人之心不可有&#xff0c;防人之心不可无。 很多人&#xff0c;喜欢晒收益&#xff0c;喜欢吹嘘多牛b。 被同行盯上&#xff0c;看着眼红&#xff0c;反手就各种搞事情。 独孤经历过&#xff0c;也看到过很多同行被搞过。 不要公…

阿里又出AI神器,颠覆传统图像编辑,免费开源!

文章首发于公众号&#xff1a;X小鹿AI副业 大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 最近阿里开源了 Mi…