哪里错了空指针异常而且logback怎么没运行
来源:3-3 自由编程
weixin_慕瓜9083905
2020-02-06 16:05:29
@Test
public void selectOneToMany()throws Exception{
SqlSession session = null;
Map param = new HashMap();
param.put("classno","Class001");
List<Classes> list = session.selectList("classes.selectByClassNo",param);
List<Student> stuList = session.selectList("student.slectOneToMany");
for(Student s:stuList){
System.out.println(s);
}
try {
session = MybatisUtils.openSession();
}catch (Exception e){
throw e;
}finally {
MybatisUtils.closeSession(session);
}
}
package com.imooc.mybatis.entity;
import java.util.ArrayList;
import java.util.List;
public class Student {
private Integer id;
private String stuno;
private String stuName;
private String sex;
private String classno;
private List<Classes> classes;
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;
}
public List<Classes> getClasses() {
return classes;
}
public void setClasses(List<Classes> classes) {
this.classes = classes;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", stuno='" + stuno + '\'' +
", stuName='" + stuName + '\'' +
", sex='" + sex + '\'' +
", classno='" + classno + '\'' +
", classes=" + classes +
'}';
}
}
package com.imooc.mybatis.entity;
public class Classes {
private Integer id;
private String classno;
private String name;
private String major;
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;
}
}
<?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">
<select id="selectByClassNo" parameterType="java.util.Map" resultType="com.imooc.mybatis.entity.Classes">
select * from student where classno = #{classno}
</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="student">
<resultMap id="rmOneToMany" type="com.imooc.mybatis.entity.Student">
<result column="classno" property="classno"></result>
<collection property="classes" select="com.imooc.mybatis.entity.Classes" column="classno"/>
</resultMap>
<select id="slectOneToMany" resultMap="rmOneToMany">
select * from student where classno=#{classno}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%thread] %d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root levle="debug">
<appender-ref ref="console"/>
<!--
日志输出级别(优先级高到低):
error:错误 - 系统的故障日志
warn:警告 - 存在风险或使用不当的日志
info: 一般性信息
debug: 程序内部用于调试信息
trace:程序运行的跟踪信息
level表示最低显示哪一项,生产时写info,开发时写debug
-->
</root>
</configuration>
2回答
好帮手慕酷酷
2020-02-06
同学你好,logback没有运行的原因是,同学没有调用openSession()方法,创建一个新的sqlSession 返回sqlSession对象。
具体如下:

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕酷酷
2020-02-06
同学你好,同学整体编写的有点问题,这里应该是Classes实体类中应该包含student集合,随之xml文件也需重新编写, 这里同学可以参考一下如下同学的代码修改一下:https://class.imooc.com/course/qadetail/148732
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题