Mybatis学习过程中遇见的错误1(初学者)

1.无法执行MybatisUtil,原因是我的Mybatis-config.xml文件配置出了问题:<mappers><mapper>配置路径错误,手改的一模一样但是提示错误(只好用复制路径的方法了)</mappers>

         复制路径方法:选中EmployeeMapper.xml文件,右键选择--->copy relative path--->到mapper处粘贴即可解决

//为了减少出错概率,以后尽可能复制路径粘贴要,粘贴地方是resources
<mappers>
        <mapper resource="com/study/mapper/EmployeeMapper.xml"></mapper>
        <!--<mapper resource="com/study/mapper/DepartMapper.xml"></mapper>-->
</mappers>
D:\softInstall\java\jdk-8u271\bin\java.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\softInstall\IntelliJ IDEA 2018.1.6\lib\idea_rt.jar=63896:D:\softInstall\IntelliJ IDEA 2018.1.6\bin" -Dfile.encoding=UTF-8 -classpath "D:\softInstall\IntelliJ IDEA 2018.1.6\lib\idea_rt.jar;D:\softInstall\IntelliJ IDEA 2018.1.6\plugins\junit\lib\junit-rt.jar;D:\softInstall\IntelliJ IDEA 2018.1.6\plugins\junit\lib\junit5-rt.jar;D:\softInstall\java\jdk-8u271\jre\lib\charsets.jar;D:\softInstall\java\jdk-8u271\jre\lib\deploy.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\access-bridge-64.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\cldrdata.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\dnsns.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\jaccess.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\jfxrt.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\localedata.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\nashorn.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\sunec.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\sunjce_provider.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\sunmscapi.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\sunpkcs11.jar;D:\softInstall\java\jdk-8u271\jre\lib\ext\zipfs.jar;D:\softInstall\java\jdk-8u271\jre\lib\javaws.jar;D:\softInstall\java\jdk-8u271\jre\lib\jce.jar;D:\softInstall\java\jdk-8u271\jre\lib\jfr.jar;D:\softInstall\java\jdk-8u271\jre\lib\jfxswt.jar;D:\softInstall\java\jdk-8u271\jre\lib\jsse.jar;D:\softInstall\java\jdk-8u271\jre\lib\management-agent.jar;D:\softInstall\java\jdk-8u271\jre\lib\plugin.jar;D:\softInstall\java\jdk-8u271\jre\lib\resources.jar;D:\softInstall\java\jdk-8u271\jre\lib\rt.jar;F:\studyNote\maven\quickstart\20201210\mybatis2\target\test-classes;F:\studyNote\maven\quickstart\20201210\mybatis2\target\classes;F:\MavenRepository\org\mybatis\mybatis\3.2.8\mybatis-3.2.8.jar;F:\MavenRepository\mysql\mysql-connector-java\8.0.14\mysql-connector-java-8.0.14.jar;F:\MavenRepository\com\google\protobuf\protobuf-java\3.6.1\protobuf-java-3.6.1.jar;F:\MavenRepository\junit\junit\4.12\junit-4.12.jar;F:\MavenRepository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 com.study.test.EmployeeTest,getEmployeeList

java.lang.NoClassDefFoundError: Could not initialize class com.study.utils.MybatisUtil

	at com.study.test.EmployeeTest.getEmployeeList(EmployeeTest.java:30)
	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.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.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)


Process finished with exit code -1

2.低级错误,单词写错,select d.pedid应该是d.depid

org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Unknown column 'd.pepid' in 'field list'
### The error may exist in com/study/mapper/DepartMapper.xml
### The error may involve com.study.mapper.DepartMapper.getDepartDepname-Inline
### The error occurred while setting parameters
### SQL: select d.pepid as did,d.depname,e.* from employee e,depart d where d.depid=e.depid and d.depname=?
### Cause: java.sql.SQLSyntaxErrorException: Unknown column 'd.pepid' in 'field list'
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:66)

3.又是因为单词拼写的错误,employee表拼成empployee

org.springframework.jdbc.BadSqlGrammarException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'emps.empployee' doesn't exist
### The error may exist in file [F:\studyNote\maven\quickstart\20201210\mybatis3\target\classes\mapper\EmployeeMapper.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: SELECT count(0) FROM empployee e, depart d WHERE e.depid = d.depid AND address LIKE concat('%', ?, '%') AND bsaralry > ?
### Cause: java.sql.SQLSyntaxErrorException: Table 'emps.empployee' doesn't exist
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'emps.empployee' doesn't exist

4.参数匹配错误:在mapper映射配置文件中,参数是int,但是在动态的SQL语句中使用了类的属性进行条件判断,所以显示参数不匹配(Integer类中没有我自定义的参数),所以把参数改为使用类就行了,同时对应的service接口及其实现类的参数也对应修改,和mapper接口一致即可

org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'empid' in 'class java.lang.Integer'
### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'empid' in 'class java.lang.Integer'
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:66)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:68)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
	at com.sun.proxy.$Proxy4.getEmployee(Unknown Source)
	at com.study.test.EmployeeTest.getEmployee(EmployeeTest.java:50)
	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.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.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

猜你喜欢

转载自blog.csdn.net/preston555/article/details/110953100