老师帮看看哪里错了

来源: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&amp;serverTimezone=Hongkong&amp;useUnicode=true&amp;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-27

同学你好,同学可以参考如下代码:

http://img.mukewang.com/climg/5f97cb1409ef93cb08540500.jpg

http://img.mukewang.com/climg/5f97cb1909be50fb08770520.jpg

http://img.mukewang.com/climg/5f97cb1f09f5a19008040802.jpg

运行结果如下:

http://img.mukewang.com/climg/5f97cb7d09bf466514610154.jpg


http://img.mukewang.com/climg/5f97cbc409988abf13220280.jpg

0

好帮手慕阿慧

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。

如下:

http://img.mukewang.com/climg/5f97c936094879b503660232.jpg

2、当多对一查询根据学生查询班级时,需要根据学生所在的班级编号,所以Student类中应该有classno属性。

参考代码如下:

http://img.mukewang.com/climg/5f97c955090636b203450222.jpg

建议同学回顾一下课程3-1和3-2小节

0
hq_ibertine_0
h 都有还是错
h020-10-27
共1条回复

好帮手慕阿慧

2020-10-26

同学你好,student2.xml中配置有误,parameterType是设置输入参数,应该写java中的类型,varchar是数据库中的类型,建议修改为java.lang.String

参考代码如下:

http://img.mukewang.com/climg/5f96919809af107f09410282.jpg

0
hq_ibertine_0
h at com.imooc.ssm.Batis.demo11(Batis.java:192) 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)
h020-10-26
共2条回复

0 学习 · 8016 问题

查看课程