老师帮看看哪里错了
来源:3-3 自由编程
qq_ibertine_0
2020-10-26 16:46:48
package com.imooc.mabits.entity; import java.util.List; public class Class { private Integer id; private String classNo; private String name; private String major; private List<Student2> stu2; public List<Student2> getStu2() { return stu2; } public void setStu2(List<Student2> stu2) { this.stu2 = stu2; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getClassNo() { return classNo; } public void setClassNo(String classNo) { this.classNo = classNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } } package com.imooc.mabits.entity; public class Student2 { private Integer id; private String stuNo; private String stuName; private String sex; private String classNo; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getStuNo() { return stuNo; } public void setStuNo(String stuNo) { this.stuNo = stuNo; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getClassNo() { return classNo; } public void setClassNo(String classNo) { this.classNo = classNo; } } <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="class"> <resultMap id="rmClass" type="com.imooc.mabits.entity.Class"> <id property="id" column="id" ></id> <result property="classNo" column="classno"></result> <collection property="stu2" select="student2.selectClass" column="classno"></collection> </resultMap> <select id="selectStudent" resultMap="rmClass"> select * from classes limit 0,1 </select> </mapper> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="student2"> <select id="selectClass" parameterType="varchar" resultType="com.imooc.mabits.entity.Student2"> select * from student2 where classno = #{value} </select> </mapper> @Test public void demo11(){ SqlSession sqlSession=null; try { sqlSession = Utiles.sqlSession(); List<Student2> list= sqlSession.selectList("class.selectStudent"); for (Student2 st2:list){ System.out.println(st2.getStuName()); } sqlSession.commit(); }catch (Exception e){ if(sqlSession!=null){ sqlSession.rollback(); } e.printStackTrace(); }finally { Utiles.closeSeesion(sqlSession); } } <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--reg_no ==> regNo --> <!-- 这是驼峰转换,比如在数据库里命名reg_no,但是在java里只能是regNo,所以要变成数据库一样的命名就要用到下面的setting会转换--> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <environments default="drv"> <environment id="drv"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/studenttest?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="wfy199852"/> </dataSource> </environment> </environments> <!--<mappers> <mapper resource="mappers/goods.xml"></mapper> </mappers>--> <!--这个是让mybatis认识我们写的东西--> <mappers> <mapper resource="mappers/class.xml"></mapper> <mapper resource="mappers/student2.xml"></mapper> </mappers> </configuration> "C:\Program Files\Java\jdk1.8.0_101\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:55551,suspend=y,server=n -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\Administrator.DESKTOP-5LSKNQK\AppData\Local\JetBrains\IntelliJIdea2020.2\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "E:\IntelliJ IDEA 2020.2.3\lib\idea_rt.jar;E:\IntelliJ IDEA 2020.2.3\plugins\junit\lib\junit5-rt.jar;E:\IntelliJ IDEA 2020.2.3\plugins\junit\lib\junit-rt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar;F:\Java\Mybaties\target\test-classes;F:\Java\Mybaties\target\classes;F:\maven-wjj\org\mybatis\mybatis\3.5.1\mybatis-3.5.1.jar;F:\maven-wjj\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar;F:\maven-wjj\junit\junit\4.13\junit-4.13.jar;F:\maven-wjj\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;F:\maven-wjj\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;F:\maven-wjj\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;F:\maven-wjj\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 com.imooc.ssm.Batis,demo11 Connected to the target VM, address: '127.0.0.1:55551', transport: 'socket' 16:44:25:433 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. 16:44:25:446 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections. 16:44:25:446 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections. 16:44:25:447 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections. 16:44:25:447 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections. java.lang.NoClassDefFoundError: Could not initialize class com.imooc.mabits.Utiles at com.imooc.ssm.Batis.demo11(Batis.java:201) 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:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) Disconnected from the target VM, address: '127.0.0.1:55551', transport: 'socket' Process finished with exit code -1
3回答
同学你好,同学可以参考如下代码:
运行结果如下:
好帮手慕阿慧
2020-10-26
同学你好,根据报错信息com.imooc.mabits.entity.Class cannot be cast to com.imooc.mabits.entity.Student2
意思是Class类不能转换为Student2类,建议同学检查一下测试类中有没有将Class对象转换为Student2对象的。
如下代码建议同学修改一下:
1、java源码中有Class类,建议同学将Class类改为Classes。
如下:
2、当多对一查询根据学生查询班级时,需要根据学生所在的班级编号,所以Student类中应该有classno属性。
参考代码如下:
建议同学回顾一下课程3-1和3-2小节
好帮手慕阿慧
2020-10-26
同学你好,student2.xml中配置有误,parameterType是设置输入参数,应该写java中的类型,varchar是数据库中的类型,建议修改为java.lang.String
参考代码如下:
相似问题