java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError

package com.imooc.mybatis.entity;

import java.util.List;

public class Classes {
   private  Integer id;
   private  String classno;
   private  String name;
   private  String major;
   private List<Student> students;
   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;
   }

   public List<Student> getStudents() {
       return students;
   }

   public void setStudents(List<Student> students) {
       this.students = students;
   }
}


package com.imooc.mybatis.entity;

public class Student {
 private Integer id;
 private String stuno;
 private String  stuname;
 private  String sex;
 private  String classno;

   public String getClassno() {
       return classno;
   }

   public void setClassno(String classno) {
       this.classno = 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;
   }
}


<?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="classes">
   <resultMap id="rmClass1" type="com,imooc.mybatis.entity.Classes">
       <id column="id" property="id"></id>
       <collection property="students" select="studentsDetail.selectByClassId"
                   column="classno"></collection>
   </resultMap>
   <select id="selectOneToMany" resultMap="rmClass1">
       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="studentsDetail">
   <select id="selectByClassId" parameterType="String"
           resultType="com.imooc.mybatis.entity.Student">
       select * from student where classno=#{value}
   </select>
</mapper>



package com.imooc.mybatis;

import com.imooc.mybatis.entity.Classes;
import com.imooc.mybatis.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class MyBatisTestor {
   @Test
   public void testOneToMany() throws Exception {
       SqlSession session = null;
       try{
           session = MyBatisUtils.openSession();
           List<Classes> list = session.selectList("classes.selectOneToMany");
           for (Classes c:list){
               System.out.println(c.getName()+" "+c.getStudents().size());
           }

       }catch (Exception e){
           throw e;
       }finally {
           MyBatisUtils.closeSession(session);
       }
   }
}

http://img1.sycdn.imooc.com//climg/5eee25cc080437d003840509.jpg

http://img1.sycdn.imooc.com//climg/5eee25cc08d3d05808790199.jpg


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小脸 2020-06-21 12:24:58

同学你好。错误信息:

java.lang.NoClassDefFoundError: Could not initialize class com.mybatis.utils.MyBatisUtils

意思是无法找到这个类com.imooc.mybatis.utils.MyBatisUtils。

经检查同学在classes.xml中Classes类的路径有误,修改如下:

http://img1.sycdn.imooc.com//climg/5eeee0e309431b0208360221.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快~

  • 提问者 慕的地2082093 #1
    老师,有几个问题不是很清楚: classes<resultMap id="rmClass1" type="com,imooc.mybatis.entity.Classes"> <id column="id" property="id"></id> <collection property="students" select="studentsDetail.selectByClassId" column="classno"></collection> </resultMap> 1. resultMap中id column="id" property="id"的column和property都是使用数据库中的主键id吗?看很多人使用classno,如下 <id column="classno" property="classNo"/> 2.column和property是都和数据库的字段要一致吗?
    2020-06-22 12:26:31
  • 好帮手慕小脸 回复 提问者 慕的地2082093 #2
    同学你好,1、并不是,propetry是Java类对应的属性,column对应的数据库中的字段名 2、不是的,column要与数据库字段一致,property是java类对应的属性。 祝学习愉快~
    2020-06-22 15:17:07
  • 提问者 慕的地2082093 #3
    老师,<id>是数据库的主键吗?看有些写的是classno,但这个好像不是主键,怎么确定<id>标签中的变量?
    2020-06-22 17:34:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师