首页 新闻 会员 周边

请问service怎么调用mapper

0
悬赏园豆:100 [已解决问题] 解决于 2022-06-15 18:04

请问service怎么调用mapper,请帮忙写个简单的demo指点一下

我在写项目时,是按照这样的逻辑写的:controller调用service接口,service的实现类serviceimpl中注入mapper,在mapper.xml中写sql,但是现在要求不能在impl中直接注入mapper,需要将mapper注入到service中,需要怎么实现,求指点!
感情是渐变色的的主页 感情是渐变色的 | 初学一级 | 园豆:14
提问于:2022-06-15 15:54
< >
分享
最佳答案
0

但是现在要求不能在impl中直接注入mapper

我觉得要求的意思是不能直接在 服务层service 调用 数据访问层mapper,他的意思应该是在 service层和mapper层 中间再加一层manager层,在manager层调用 mapper,service层调用manager层,controller调用service

页面 -> controller -> service -> manager -> mapper -> 数据库
收获园豆:100
飒沓流星 | 小虾三级 |园豆:1099 | 2022-06-15 17:22

感谢你的建议,我感觉你的建议应该是我想要的,我感觉这样可以,我试试,感谢!

感情是渐变色的 | 园豆:14 (初学一级) | 2022-06-15 17:29

@感情是渐变色的:
1.mapper层只负责和数据库通信(当然也只能和数据库通信)
2.manager层中调用mapper实现一个个独立的功能,也可以理解为是业务逻辑的碎片,在service中组装这些碎片(比如说:查询,新增,修改)
3.service层调用manager实现业务逻辑(比如说:先调用查询,再调用修改,完成数据更新的业务逻辑)
4.事务放在service这一层,因为service是业务逻辑
5.controller调用service。。。

这样分层是有道理的:

因为service层是业务层,事务就放在这一层,如果没有manager层,在业务逻辑复杂的情况下,极有可能导致事务嵌套以及service方法自调用问题,service方法自调用又会导致事务失效

飒沓流星 | 园豆:1099 (小虾三级) | 2022-06-15 17:46

@飒沓流星: 感谢您的指导,我明白什么意思了,谢谢!

感情是渐变色的 | 园豆:14 (初学一级) | 2022-06-15 17:58

@感情是渐变色的: 客气,啰嗦了点😌

飒沓流星 | 园豆:1099 (小虾三级) | 2022-06-15 17:58

@飒沓流星: 您讲的很详细,收获很大,十分感谢!

感情是渐变色的 | 园豆:14 (初学一级) | 2022-06-15 18:00

@感情是渐变色的: 客气客气,共同学习😃

飒沓流星 | 园豆:1099 (小虾三级) | 2022-06-15 18:07
其他回答(2)
1

没见过这么奇怪的需求。

注入肯定是不靠谱了,这样可以吗?
service中
XxxMapper 123Mapper = xxxUtil.getBean(XxxMapper .class);

实现中直接使用123Mapper 调用

mowen285 | 园豆:660 (小虾三级) | 2022-06-15 17:07

我也很郁闷,我以前都是在实现类中注入mapper的,现在的要求是实现类是对外提供服务的,所以实现类中不可以直接注入mapper,我也很无奈,我在网上看到了有种办法是直接在service注入mapper,就跟在实现类中注入一样,我尝试一下吧。

支持(0) 反对(0) 感情是渐变色的 | 园豆:14 (初学一级) | 2022-06-15 17:17

感谢你的建议!

支持(0) 反对(0) 感情是渐变色的 | 园豆:14 (初学一级) | 2022-06-15 17:17
0

你的 impl 和 service 不是同一个东西?

快乐的凡人721 | 园豆:3916 (老鸟四级) | 2022-06-15 17:16

确实是一个东西,我明白你的意思

支持(0) 反对(0) 感情是渐变色的 | 园豆:14 (初学一级) | 2022-06-15 17:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册