问题:

19-Apr-2022 11:08:37.371 信息 [http-nio-8080-exec-5] com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} inited
java.lang.IllegalArgumentException: argument type mismatchat 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 com.fan.goods.dao.DBUtil.executeQuery(DBUtil.java:197)at com.fan.goods.dao.impl.GoodsDaoImpl.getGoodsList(GoodsDaoImpl.java:13)at com.fan.goods.service.GoodsServiceImpl.getGoodsList(GoodsServiceImpl.java:13)at com.fan.goods.servlets.GoodsServlet.getGoodsList(GoodsServlet.java:28)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 com.fan.goods.servlets.BaseServlet.service(BaseServlet.java:27)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:750)

这个问题是参数类型不匹配,是我这个项目的实体和数据库中表不匹配,参数不匹配,可不单单指的是名字不一样,还有类型,我做个这个项目是javaweb,那个与数据库进行交互的那个类,我写成了工具类,工具类如下:

package com.fan.goods.dao;import com.alibaba.druid.pool.DruidDataSource;
import org.apache.commons.beanutils.ConvertUtils;import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;/*** 数据库操作的辅助类* 要求所有操作数据库的类都要继承该类* 而且这个类不允许实例化*/
public abstract class DBUtil {protected Connection conn = null;protected PreparedStatement ps = null;protected ResultSet rs = null;private static DruidDataSource druidDataSource = null;/*** 连接数据库* @return  连接对象*/protected Connection getConn1() throws ClassNotFoundException, SQLException {Class.forName("com.mysql.cj.jdbc.Driver");return conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/goods?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai", "root", "FJG258775");}static{try {//读取资源文件(db.properties)//创建一个资源类实例对象Properties properties = new Properties();//将资源文件db.properties加载内存中,生成一个输入流对象InputStream inputStream = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");//将输入流对象添加到properties对象,此时properties对象会自动读取输入流中的数据properties.load(inputStream);//创建Druid数据源对象druidDataSource = new DruidDataSource();//将properties对象中属性自动添加到druid对象中druidDataSource.configFromPropety(properties);} catch (IOException e) {e.printStackTrace();}}/*** 连接数据库基于数据库连接池Druid* @return  连接对象*/protected Connection getConn() throws ClassNotFoundException, SQLException, IOException {//从druid中获取连接对象return conn = druidDataSource.getConnection();}/*** 释放资源方法*/protected void closeAll(){try {if(rs != null){rs.close();}if(ps != null){ps.close();}if(conn != null){conn.close();}} catch (SQLException e) {e.printStackTrace();}finally{conn = null;ps = null;rs = null;}}/*** 执行增、删、改操作的通用方法* @param sql  SQL语句* @param params   SQL语句中?号占位符的值,参数的顺序与SQL语句中?号占位符的值得顺序一致,类型也要一致*                 Object...:可变参数,数组* @return*/protected int executeUpdate(String sql,Object... params){try {//连接数据库this.getConn();//创建预处理对象ps = conn.prepareStatement(sql);/**** 设置?号占位符的值* 先判断SQL语句中是否包含?号,如果包含才设置,如果不包含则不设置* 根据params参数判断SQL语句中是否包含?号占位符*/if(params!=null && params.length!=0){//循环设置?号占位符的值for(int i=0;i<params.length;i++){ps.setObject(i+1,params[i]);}}//执行SQL语句并返回结果return ps.executeUpdate();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException throwables) {throwables.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {this.closeAll();}return 0;}/*** 使用反射封装一个方法:*  该方法可以自动将任意表的查询结果自动封装到对应的实体对象中,并将这些对象添加集合中返回*  约束条件:*      1.实体类中的属性的属性名必须和查询结果中的列名一致*      2.实体类中的属性的类型必须和查询结果中列的类型相对应*//*** 执行查询的通用方法,该方法可以将查询的结果自动封装到实体对象,并实体对象添加到集合中返回*  持久层框架中的查询映射功能都是使用类似的方式进行封装的(MyBatis,Hibernate)* @param cla           SQL语句中查询结果对应的实体类的字节码对象* @param sql           SQL语句* @param params        SQL语句中?号占位符的值* @param <T>           通用泛型,T表示任意类型* @return              List集合*/public <T> List<T> executeQuery(Class<T> cla, String sql, Object... params){System.out.println("开始封装查询结果....");try {//连接数据库this.getConn();//创建预处理对象ps = conn.prepareStatement(sql);/**** 设置?号占位符的值* 先判断SQL语句中是否包含?号,如果包含才设置,如果不包含则不设置* 根据params参数判断SQL语句中是否包含?号占位符*/if(params!=null && params.length!=0){//循环设置?号占位符的值for(int i=0;i<params.length;i++){ps.setObject(i+1,params[i]);}}//执行查询的SQL语句,返回结果集rs = ps.executeQuery();//获得当前查询结果集的元数据(元数据等同于表的表结构)ResultSetMetaData rsmt = rs.getMetaData();//从元数据中获得列的数量int columnCount = rsmt.getColumnCount();//创建一个用于存放所有实体对象的List集合List<T> list = new ArrayList<>();//遍历结果集while(rs.next()){//创建实体对象T t = cla.getDeclaredConstructor().newInstance();//获得当前行中对应的列数据//使用for循环遍历所有列for(int i=0;i<columnCount;i++){//根据列编号获得每列的数据Object value = rs.getObject(i+1);//获得列名(列名与实体类中的属性名一致)String columnName = rsmt.getColumnName(i+1);//获得属性对象Field field = cla.getDeclaredField(columnName);//根据列名获得方法名String methodName = "set"+columnName.substring(0,1).toUpperCase()+columnName.substring(1);//根据方法名和属性的列名获得方法对象Method method = cla.getDeclaredMethod(methodName,field.getType());//调用方法//ConvertUtils.convert(value,field.getType()):使用类型转换器将value转换目标类型method.invoke(t, ConvertUtils.convert(value,field.getType()));}//将封装好的对象添加到list集合中list.add(t);}return list;} catch (Exception e) {e.printStackTrace();}  finally {this.closeAll();}return null;}
}

其工具类的要求就是项目中的实体与表中的实体不仅字段名要一致而且那个类型也要一致,我错就错在那个字段名一样了,但是那个类型,我把date不小心写成data了,一直报错,一直改,后来发现是自己把那个类型弄错了,所以还是要细心了

java.lang.IllegalArgumentException: argument type mismatch相关推荐

  1. 使用java.lang.reflect.Method.invoke抛出java.lang.IllegalArgumentException: argument type mismatch异常

    错误信息: java.lang.IllegalArgumentException: argument type mismatch     at sun.reflect.NativeMethodAcce ...

  2. Cause: java.lang.IllegalArgumentException: argument type mismatch

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflecti ...

  3. java参数错误,参数不匹配错误java.lang.IllegalArgumentException: argument type mismatch

    当前位置:我的异常网» Java Web开发 » 参数不匹配错误java.lang.IllegalArgumentException 参数不匹配错误java.lang.IllegalArgumentE ...

  4. MyBatis-Plus Cause: java.lang.IllegalArgumentException: argument type mismatch解决

    报错如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Re ...

  5. Caused by: java.lang.IllegalArgumentException: argument type mismatch

    近日,重构代码时,使用mybatis-plus时,一个普通的查询出现个参数丢失,找了半天,没找到具体原因.发现with invalid types  (Integer,String,String,St ...

  6. java反射异常ava.lang.IllegalArgumentException: argument type mismatch

    项目使用Springboot+mybatis进行落库,出现问题: java.lang.IllegalArgumentException: argument type mismatchat sun.re ...

  7. IllegalArgumentException :argument type mismatch

    上周学习的封装查询语句,今天在使用中查询语句的封装就发现了一个异常 java.Lang.IllegalArgumentException:argument type mismatch 单看名字的话应该 ...

  8. Could not set property ‘id‘ of ‘‘ with value Cause: IllegalArgumentException: argument type mismatch

    Could not set property 'id' of 'class com.gct.eduservice.entity.EduSubject' with value '147474759963 ...

  9. Error:Internal error: (java.lang.IllegalArgumentException) Argument for

    @[TOC](记一次强制关机之后idea导致项目不能启动(Error:Internal error: (java.lang.IllegalArgumentException) Argument for ...

最新文章

  1. AIWalker是个什么样的号?为什么要推荐呢?聚焦low-level,关注AI最前沿
  2. 使用CUDA计算Haar小波变换
  3. 汇编逻辑运算指令笔记
  4. TensorFlow(五)常用函数与基本操作
  5. 一个小小的总结--关于写博客这件事
  6. android 去掉顶部状态栏
  7. ICommand接口
  8. phpstudy免费安全检测服务_武汉一高校15名大学生暑期进行免费甲醛检测服务? 服务500个家庭...
  9. 【知识图谱系列】基于2D卷积的知识图谱嵌入
  10. Linux下Tomcat使用80端口
  11. arXiv上引用文章在bibtex下的引用格式
  12. 原神ios android,原神ios和安卓数据互通吗 原神ios和安卓能一起玩吗
  13. 利用saopanel系统的UDP转发模式破解校园网
  14. 添加MSN客服代码,可显示MSN在线和不在线,自动打开MSN聊天窗口
  15. C ++ 扑克牌洗牌
  16. java int和Integer的区别
  17. Kali metasploit 更新以及问题 Unable to find a spec satisfying metasploit-framework (>= 0) in the set.
  18. 后浪小萌新Python --- 字典
  19. 证明求最短路径问题具有最优子结构(动态规划)
  20. VB.NET的 结构和类

热门文章

  1. Python爬虫实战(2)之爬取NBA球队各个球员头像图片
  2. Respones请求重定向
  3. 手办商城app开发功能分析
  4. Linux多窗口终端使用、shell快捷键以及修改快捷键
  5. 开源直播课丨大数据集成框架ChunJun类加载器隔离方案探索及实践
  6. python群控微信_带你用 Python 实现自动化群控(入门篇)
  7. 美国农业初创公司Gotham Greens获2900万美元融资:用大数据运营温室
  8. js重新加载页面的方法
  9. IDEA2022配置Tomcat服务器教程(超细致版)
  10. 十大报表工具 BI 产品深度点评-----BI报表行业专家干货分享----一文读懂报表与BI的行业现状----最新常用BI报表工具对比科普帖