ResultMap结果映射 的问题
老师您好,自己在调试中发现的意外问题。
前提:ResultMap结果映射 的映射规则已经配置好,ResultDTO类也创建好了。
但ResultDTO类当中的
private Goods goods;
private Category category;
并没有实例化。
为什么调试时还是能正常运行?
这段代码并没有发生异常,而是正常输出了所有goods类的title和category类的categoryName。
是谁将它实例化了?
望老师解答。麻烦了
正在回答
同学你好。for循环遍历的是MyBatis得到的list中的内容。这个list以及其中的对象等是MyBatis帮我们实例化的。
下面来讲一下MyBatis的解析过程:
1、在执行到sqlSession.selectList("goods.selectGoodsDTO")时,MyBatis会根据“goods”找到namespace为goods的
2、找到以selectGoodsDTO为id的sql标签,执行sql语句,由于我们指定了resultMap,MyBatis就会将结果集按照指定的resultMap来解析:
3、在结果映射这一步,我们按照不同的属性名进行了指定,MyBatis就将对应属性实例化,并且将参数都放入其中,组装出GoodsDTO对象:
最后,由于我们是按照selectList来查找的。MyBatis就知道要给我们组装List了。用来接收的集合List<GoodsDTO>,这里泛型和resultMap中的type需一致。
如果解答了同学的疑问,望采纳~
祝学习愉快~
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星