java.lang.IllegalArgumentException: argument type mismatch,数据库查询数据,mybatis,反射,Method,invoke

news/2024/5/19 3:02:09 标签: 数据库, java, 反射, mybatis, mysql

异常信息

java">Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: argument type mismatch
	at xyz.slienceme.mybatis.utils.Executor.selectList(Executor.java:87)
	at xyz.slienceme.mybatis.proxy.MapperProxy.invoke(MapperProxy.java:57)
	at com.sun.proxy.$Proxy2.findAll(Unknown Source)
	at xyz.slienceme.test.MybatisTest.main(MybatisTest.java:32)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at xyz.slienceme.mybatis.utils.Executor.selectList(Executor.java:75)
	... 3 more

异常分析

  • java.lang.IllegalArgumentException: argument type mismatch

关键错误行数

java">writeMethod.invoke(obj,columnValue);

错误分析

参数类型不匹配 //要求:实体类的属性和数据库表的列名保持一种
在这里插入图片描述
在这里插入图片描述
这里的birthday是datetime类型
然而User类的birthday是Date类型,大概不一致,猜测是这里的问题
在这里插入图片描述

解决方法

我修改了Date为LocalDateTime,虽然不知道对不对,但是不报错了,查询到了正确的信息
在这里插入图片描述

在这里插入图片描述

源代码

java">String columnName = rsmd.getColumnName(i);
System.out.println("columnName = " + columnName);
//根据得到列名,获取每列的值
Object columnValue = rs.getObject(columnName);

//给obj赋值:使用Java内省机制(借助PropertyDescriptor实现属性的封装)
PropertyDescriptor pd = new PropertyDescriptor(columnName,domainClass);//要求:实体类的属性和数据库表的列名保持一种
//获取它的写入方法
Method writeMethod = pd.getWriteMethod();
System.out.println("writeMethod = " + writeMethod.getName());
//把获取的列的值,给对象赋值
writeMethod.invoke(obj,columnValue);
System.out.println("obj = " + obj.toString());

注:(之前的前端笔记传送门)

1. HTML初学
2. CSS初学
3. JavaScript初学
4. JQuery初学
5. HTML复学
6. CSS复学
7. JavaScript基础 复学
8. JavaScript高级 复学
9. BootStrap简单了解
10.JQuery基础复学


http://www.niftyadmin.cn/n/1459979.html

相关文章

学习日志day25(2021-08-12)(1、BootStrap框架)

学习内容:学习前端(Day25) 1、BootStrap框架 1、定位 (1)BootStrap框架是基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范…

学习日志day26(2021-08-13)(1、JavaScript简介 2、js基本语法 3、js数据类型 4、js函数)

学习内容:学习前端(Day26) 1、JavaScript简介 2、js基本语法 3、js数据类型 4、js函数 1、JavaScript (1)JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型…

Mybatis基于代理Dao的CRUD操作 ->(个人学习记录笔记)

文章目录代码架构javaxyz.slienceme.dao.IUserDaoxyz.slienceme.domain.Userxyz.slienceme.domain.QueryVoresourcesxyz.slienceme.dao.IUserDao.xmltestxyz.slienceme.test.MybatisTest代码架构 java xyz.slienceme.dao.IUserDao package xyz.slienceme.dao;import xyz.slie…

苹果屏蔽更新_知友答疑——无需越狱,屏蔽 iOS 13更新的描述文件来了

知友投问ID:丢失的*婆导语:2020年9月5日,苹果推出了屏蔽iOS13系统更新描述文件。大家只要在苹果手机中安装这个描述文件,就能够成功屏蔽苹果手机中的更新提醒了。这个对于有强迫症的人来说是非常有用的。那么iOS13系统的苹果用户如…

学习日志day27(2021-08-16)(1、Array数据类型 2、Date对象 3、Math对象 4、正则表达式 5、JavaScript面向对象设计 )

学习内容:学习前端(Day27) 1、Array数据类型 2、Date对象 3、Math对象 4、正则表达式 5、JavaScript面向对象设计 1、Array数据类型 (1)JavaScript的数组 • JavaScript的数组中可以保存任何类型的数据 • JavaScrip…

应急管理信息化发展战略规划框架2020-2022_中国企业信息化战略规划方法演进(一)...

企业信息化战略规划大概是2002年前后成为一种独立的管理咨询服务品种,我很幸运在这个潮流中,成为在中国最早从事企业信息化战略规划(ITSP)咨询服务的顾问,见证了企业信息化战略规划近二十年的发展。自己一路走来,从初出茅庐到庖丁…

Mybatis的连接池及事务 ->(个人学习记录笔记)

1. 连接池: 我们在实际开发中都会使用连接池。因为它可以减少我们获取连接所消耗的时间。 2. mybatis中的连接池 2.1 mybatis连接池提供了3种方式的配置: 2.1.1 配置的位置: 主配置文件SqlMapConfig.xml中的dataSource标签,type…

numpy数组按某一维度相加_Python学习教程:通俗易懂的Numpy入门教程

Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pandas也是基于numpy构建的,机器学习包scikit-learn也大量使用了numpy方法。本文介绍了Numpy的n维数组在数据处理和分析的所有核心应用。目录如何构建numpy数组如何观察数…