Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法

Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法

一、问题描述

写好配置文件用JUnit进行测试,一运行就报错:

org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.fendo.entity.Person with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.fendo.entity.Person.<init>()
### The error may exist in com/fendo/entity/Person.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select * from person
### Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.fendo.entity.Person with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.fendo.entity.Person.<init>()
  at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
  at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
  at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98)
  at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:114)
  at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:58)
  at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43)
  at com.sun.proxy.$Proxy6.getPersons(Unknown Source)
  at com.fendo.test.TestMybatis.test(TestMybatis.java:40)
  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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
  at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
  at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
  at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
  at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
  at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
  at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
  at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
  at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
  at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
  at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
  at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
  at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.fendo.entity.Person with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.fendo.entity.Person.<init>()
  at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:83)
  at org.apache.ibatis.reflection.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:45)
  at org.apache.ibatis.reflection.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:38)
  at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:535)
  at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:514)
  at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:334)
  at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:294)
  at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:269)
  at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:239)
  at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:153)
  at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:57)
  at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:70)
  at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:57)
  at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:259)
  at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:132)
  at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:105)
  at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)
  at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:104)
  ... 31 more
Caused by: java.lang.NoSuchMethodException: com.fendo.entity.Person.<init>()
  at java.lang.Class.getConstructor0(Class.java:3082)
  at java.lang.Class.getDeclaredConstructor(Class.java:2178)
  at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:57)
  ... 48 more

二、解决方法

从上面的异常可以看出: Java.lang.NoSuchMethodException: com.fendo.entity.Person.<init>()

person这个实体类不能初始化,不能初始化的原因可能是没有构造方法,然后我查看了下类确实没有构造方法,为他添加个构造方法,就可以了。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Ibatis.net结合oracle批量删除实现代码

    要删除的字符串ID为 复制代码 代码如下: string SDSALES_IDString = 1,2,3,4,5,6,7 //转成Array Array array = SDSALES_IDString.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray<string>(); 在模型定义一个 public Array SDSALES_IDs {get;set;} XML: 复

  • Mybatis与Ibatis的区别

    Mybatis与Ibatis的区别: 1.Mybatis实现了接口绑定,使用更加方便 在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便. 这可以说是Mybatis最重要的改进. 注意: 虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置, 不过强烈建议仍然使用xml配置的方式.毕竟annotation的配置方式功能有限且代码

  • ibatis简单实现与配置

    那我们什么时候可以用到ibatis呢,我们用hibernate的时候会发现,有的时候hibernate不支持一些特别精确的查询,这个时候我们完全可以用到ibatis,因为他是半自动化的.一会我们可以看到,他的查询语句是我们在配置文件xml中写的.hibernate可以用到一些大型的项目当中,ibatis我们可以应用到一些小型的项目当中. 下面我们看下ibatis的具体实现,hibernate中,我们都知道有一个hibernate.cfg.xml配置文件,和另一个*.hbm.xml配置文件,在ib

  • ibatis学习之搭建Java项目

    IBATIS简介 ibatis是 Apache的开源项目,一个ORM 解决方案,ibatis最大的特点就是小巧,上手很快. 使用 ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM而言是基本一致的. iBatis是一个基于SQL映射支持Java和·NET的持久层框架,相对Hibernate和ApacheOJB等"一站式"ORM解决方案而言,iBatis 是一种"半自动化"的ORM实现. 一.J

  • Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法

    Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法 一.问题描述 写好配置文件用JUnit进行测试,一运行就报错: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiat

  • bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法

    日期插件 bootstrap-datetimepicker 在火狐下出现一条报错信息:TypeError: (intermediate value).toString(-).split(-)[1] is undefined 这条错误必然出现,难道没有在 Firefox 下进行测试. 在 Firefox 下查看项目 demo (http://www.malot.fr/bootstrap-datetimepicker/demo.php)可以正常运行,但这个 demo.php 使用的是 2013-3-

  • vue3.0报错Cannot find module ‘worker_threads‘的解决办法

     记录一下vue3.0的第一次尝试,启动项目的时候报错Cannot find module 'worker_threads',查了一下发现是因为个人电脑node版本太低,查看了一下版本 node -v v11.2.0 然后升级一下自己的node版本再执行启动命令就OK了 npm install -g n (mac记得加sudo) n latest 总结:需要把node.js升级到版本12以上,就可以解决vue3.0报错Cannot find module 'worker_threads'的问题了

  • springboot+mybatis报错找不到实体类的问题

    目录 springboot+mybatis报错找不到实体类 找不到实体类的错误可能有很多,接下来列举几个地方 springboot+mybatis 找不到实体类问题 No qualifying bean of type‘com.wj.bfsh.mapper.SysUserMapper‘ available 问题出现在 springboot+mybatis报错找不到实体类 找不到实体类的错误可能有很多,接下来列举几个地方 启动类位置不对,启动类应该在你的service和dao 的上一层,因为Spr

  • mybatis报错 resultMapException的解决

    目录 mybatis报错 resultMapException 原因 解决方式 总结mybatis resultmap需要注意的地方 mybatis报错 resultMapException 今天在使用tkmapper时,在复制了实体类之后,新增加了关联查询数据返回的字段,数据库sql使用的详细字段查询,但是此时报错resultMapException,这是因为mybatis中的resultMap 会用无参的构造方法,如果类中加入了新的带参的构造,则需要在类中显式的加入无参的构造,否则会出现异常

  • maven package 打包报错 Failed to execute goal的解决

    总结一下maven 打包,项目工程开发工具idea14,使用 JDK 1.8 版本 1.打包前需要先将idea关掉,不然会导致mvn clean的时候,部分文件删除不掉,mvn package的时候,也会丢失文件. 2.mvn package打包报错:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.6.1:clean (default-clean) on project 解决办法: 1. p

  • AngularJS报错$apply already in progress的解决方法分析

    本文实例分析了AngularJS报错$apply already in progress的解决方法.分享给大家供大家参考,具体如下: 如果我们使用了AngularJS中的$scope.$apply()或者$scope.$digest(),我们很可能会遇到类似下面的错误,虽然这个错误没有太大影响,但是在日志中看起来还是很不爽的,日志中记录的异常或者错误,就应该是需要关注和解决的问题,否则就没有必要出现在日志中了. Error: [$rootScope:inprog] $apply already

  • 解决laravel 5.1报错:No supported encrypter found的办法

    本文主要介绍了关于解决laravel 5.1报错:No supported encrypter found的办法,分享出来供大家参考学习,下面来看看详细的介绍: 问题描述 在使用laravel5.1进行项目开发的时候,出现了"No supported encrypter found. The cipher and / or key length are invalid."的报错信息,导致页面无法显示. 网上的绝大多数答案都是直接执行PHP artisan key:generate即可.

  • Unity报错InvalidOperationException: out of sync的解决

    Unity 报错 之 InvalidOperationException: out of sync 报错原文: InvalidOperationException: out of sync System.Collections.Generic.Dictionary2+Enumerator[System.Int32,UnityEngine.Transform].VerifyState () (at /Users/builduser/buildslave/mono/build/mcs/class/c

  • mybatis报错元素内容必须由格式正确的字符数据或标记组成异常的解决办法

    今天同事写一个查询接口的时候,出错:元素内容必须由格式正确的字符数据或标记组成. 错误原因:mybatis查询的时候,需要用到运算符 小于号:< 和大于号: >,在mybatis配置文件里面,这种会被认为是标签,所以解析错误 错误事例: select <include refid="Base_Column_List" /> from t_time_interval where status <> 99 and time_intvl_id >=2

随机推荐