前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >StaticService

StaticService

作者头像
阿超
发布2022-08-21 13:35:57
1480
发布2022-08-21 13:35:57
举报
文章被收录于专栏:快乐阿超快乐阿超

今天又给MP提交了一个PR

https://gitee.com/baomidou/mybatis-plus/pulls/223

是用于

在使用mybatis-plus进行开发中,我不禁产生一个疑问,为什么?每次使用我将会产生这些代码:

代码语言:javascript
复制
private UserInfoService userInfoService;
private UserDepartmentService userDepartmentService;
private UserPositionService userPositionService;
private UserOrderService userOrderService;

我告诉自己,这是为了引用SpringBean,让其保持单例运行,但貌似这些Service,大多都是空实现,这是mybatis-plus开发者们共同的努力,让我能不用写这些CRUD的代码,但仍然每次需要去新建一个XXXService实现IService,然后再写一个实现类XXXServiceImpl继承ServiceImpl<XXXMapper,XXX>

我逐渐接受这种方式,比起自己实现,有了mybatis-plus,能让我进行单表的几乎所有操作,只需要每加一张表,用代码生成器生成EntityMapperServiceServiceImpl即可,两年里,我一直如此使用

直到近期,我发现也许ServiceServiceImpl所代表的业务层,要么是无函数,要么是有大量构建参数条件的函数(这些也许应该放到Mapper层,只是因为需要批量操作等,不得不放到Service),并且这么多无函数的Service,让项目整体看起来很臃肿

因此我通过研读Mybatis-plus源码,发现也许并不需要一个实体一个Service(就像一些很小的关联表),写下了这个类

com.baomidou.mybatisplus.extension.toolkit.StaticService

它能做什么?

可以通过静态方式调用对应Service操作,就像这样:

代码语言:javascript
复制
Entity entity = new Entity();
entity.setName("ruben");
StaticService.save(entity);

并且你不需要对应的Service接口以及其实现

输入图片说明
输入图片说明

它几乎包含了IService中所有方法(除了ktolin,这块暂时还未写)

并对应涵盖了测试用例

com.baomidou.mybatisplus.test.toolkit.StaticServiceTest

输入图片说明
输入图片说明
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档