正在回答 回答被采纳积分+1
4回答
好帮手慕小班
2020-09-24 10:15:01
同学你好,查询一对多和多对多可以使用@Many注解。
1)以参数id为“10000”为例,select方法执行的sql语句如下:
select * from catalog where id='10000';
得到的结果集如下:

进行结果集映射,一句Result指定了一个结果集的列(数据库字段)和实体类的属性的对应关系。解析到@Result(column = "id",property = "children",many = @Many(select = "selectByPid"))时,根据结果集中的id,执行selectByPid方法。
这个结果集中的id是当前分类的id,而要去寻找的是他们的孩子们。所以要用当前结果集中的id值传递给selectByPid方法,查询那些以当前id为pid的分类们。
2)于是会执行下面这句查询:
select * from catalog where pid='10000';
得到的结果集如下:

这个结果会被MyBatis转换为List<Catalog> 放到调用它的select方法的返回值,那个Catelog对象的children属性中去。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星