老师帮看看哪里错了
来源: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 -13回答
同学你好,同学可以参考如下代码:



运行结果如下:


好帮手慕阿慧
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
参考代码如下:

相似问题