使用MyBatis框架实现多对多关系映射报空指针异常

项目场景:

项目场景:使用MyBatis框架实现多对多关系映射


问题描述:

在运行测试代码时报以下错误:

org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: java.lang.NullPointerException

具体报错信息如下:
在这里插入图片描述

相关XML代码如下:

	<resultMap type="Student" id="studentResult">
		<id property="id" column="s_id"/>
		<result property="name" column="s_name"/>
		<result property="gender" column="s_gender"/>
		<result property="age" column="s_age"/>
		<collection property="courses" column="courseResult"/>
	</resultMap>
	
	<resultMap type="Course" id="courseResult">
		<id property="id" column="c_id"/>
		<result property="name" column="c_name"/>
		
	</resultMap>
	
	<select id="findAllStudents" resultMap="studentResult">
		select s.id as s_id, s.name as s_name, s.gender as s_gender, s.age as s_age, 
			c.id as c_id, c.name as c_name 
		from student s, course c, stu_cou sc 
		where s.id = sc.s_id 
		and c.id = sc.c_id 
	</select>

相关JAVA代码如下:

@Test
	public void test1() {
		SqlSession session = MyBatisSqlSessionFactory.getSession();
		ManyToManyMapper mapper = session.getMapper(ManyToManyMapper.class);
		List<Student> students = mapper.findAllStudents();
		students.forEach((stu) -> {
			System.out.println(stu);
			stu.getCourses().forEach((cou) -> {
				System.out.println("\t" + cou);
			});
		});
	
	}

原因分析:

通过调试发现相应的factory、session、mapper对象都不为空,最后从XML中寻找,发现在resultMap中的collection子元素的column属性写错了


解决方案:

将XML中的resultMap元素中的collection子元素的column属性改为resultMap属性即可。
修改后的代码如下:

<resultMap type="Student" id="studentResult">
		<id property="id" column="s_id"/>
		<result property="name" column="s_name"/>
		<result property="gender" column="s_gender"/>
		<result property="age" column="s_age"/>
		<collection property="courses" resultMap="courseResult"/>
</resultMap>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值