注解的问题

注解的问题

这里不需要用@param传递参数吗,和注解那里讲的不一样http://img1.sycdn.imooc.com//climg/5f6b189f095f7ff009510269.jpg

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

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

4回答
好帮手慕小班 2020-09-24 10:15:01

同学你好,查询一对多和多对多可以使用@Many注解。

 1)以参数id为“10000”为例,select方法执行的sql语句如下:

select * from catalog where id='10000';

得到的结果集如下:

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

进行结果集映射,一句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';

得到的结果集如下:

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

这个结果会被MyBatis转换为List<Catalog> 放到调用它的select方法的返回值,那个Catelog对象的children属性中去。

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

好帮手慕小班 2020-09-23 18:06:59

同学你好,1、当只有一个参数时,myBatis会自动进行匹配,可以不需要编写@param指定参数名的。

  2、selectByCid是通过传入的pid执行select语句,查询到对应的数据并返回,这里并不是递归方法。

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

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

  • 提问者 源治泷谷 #1
    可是selectByPid里面要查询子分类many=@Many(select = "selectById")
    2020-09-23 19:16:49
提问者 源治泷谷 2020-09-23 17:56:36

这个selectByCid是递归方法?

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

提问者 源治泷谷 2020-09-23 17:56:06

这个selectByCid是递归?

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

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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