当前位置: 首页 > news >正文

MyBatis-Plus 提供的一个通用服务层实现类

一、代码示例

@Service
public class CarriageServiceImpl extends ServiceImpl<CarriageMapper, CarriageEntity> implements CarriageService{@Overridepublic List<CarriageDTO> findAll() {return List.of();}
}

在这段代码中,`CarriageServiceImpl` 是一个 Spring 服务类,实现了业务逻辑接口 `CarriageService`,并继承了 MyBatis-Plus 提供的通用实现类 `ServiceImpl<CarriageMapper, CarriageEntity>`。下面是对代码中注解、继承和实现的详细解释:

二、注解

1. **@Service**:
   - 这是 Spring 的注解,用于将当前类标识为一个服务层组件(Service)。
   - 使用 `@Service` 注解,Spring 会自动将这个类注册为 Spring 容器中的一个 Bean,并管理它的生命周期。
   - 在应用程序中,你可以通过依赖注入(如 `@Autowired`)的方式在其他组件中使用这个服务。

三、 继承

1. **`extends ServiceImpl<CarriageMapper, CarriageEntity>`**:
   - `ServiceImpl` 是 MyBatis-Plus 提供的一个通用实现类,封装了对 Mapper 的基础 CRUD 操作,简化了服务层的开发。
   - 继承 `ServiceImpl` 的好处是,`CarriageServiceImpl` 类可以自动获得 `ServiceImpl` 类提供的基础 CRUD 方法,而不需要自己实现。
   - 泛型参数 `<CarriageMapper, CarriageEntity>`:
     - `CarriageMapper`:指定了对应的 Mapper 接口,用于数据库操作。
     - `CarriageEntity`:指定了操作的实体类类型。

   - `ServiceImpl` 类提供了许多方法,比如 `save`、`removeById`、`getById`、`list` 等,`CarriageServiceImpl` 通过继承这些方法,可以直接调用这些方法来操作 `CarriageEntity` 实体。

四、 实现

1. **`implements CarriageService`**:
   - `CarriageServiceImpl` 类实现了 `CarriageService` 接口,意味着它必须实现 `CarriageService` 中定义的所有方法。
   - `CarriageService` 是一个自定义的服务接口,继承了 `IService<CarriageEntity>`,除了基础 CRUD 操作外,还可以定义更多的业务逻辑方法。

2. **`@Override public List<CarriageDTO> findAll()`**:
   - 这个方法是对 `CarriageService` 接口中 `findAll()` 方法的实现。
   - 这个方法的作用是获取所有的运费模板数据,并返回一个 `List<CarriageDTO>` 对象列表。当前实现中,这个方法返回了一个空列表 (`List.of()`),你可以根据业务需求在此处实现实际的逻辑。
   - `@Override` 注解表示这个方法是重写父类或接口中的方法,用于提高代码的可读性,并帮助编译器检查是否正确地重写了方法。

五、 总结

- **`@Service`**:标识为服务层组件,供 Spring 容器管理。
- **继承 `ServiceImpl<CarriageMapper, CarriageEntity>`**:继承了 MyBatis-Plus 提供的通用实现类,自动具备了基础 CRUD 操作的功能,简化了服务层代码。
- **实现 `CarriageService`**:实现了自定义的业务逻辑接口,可以扩展更多与 `CarriageEntity` 相关的业务操作。

通过这些设计,`CarriageServiceImpl` 类成为了一个功能强大且灵活的服务层组件,可以处理 `CarriageEntity` 实体的数据库操作,并扩展更多业务逻辑。

http://www.lryc.cn/news/426360.html

相关文章:

  • 41-设计规则:线宽规则
  • 使用MicroApp重构旧项目
  • 【Golang】go mod的使用
  • Linux内核之网络套接字
  • SpringBoot事务-调度-缓存
  • 社交媒体分析:如何利用Facebook的数据提升业务决
  • 企业中的流程组织
  • Redis:查询是否包含某个字符/字符串之二
  • 算法笔记|Day23贪心算法
  • [星瞳科技]OpenMV使用时有哪些常见错误和解决办法?
  • 深度学习入门(二):PyTorch使用-张量的类型转换,拼接操作,索引操作,形状操作
  • 使用C#禁止Windows系统插入U盘(除鼠标键盘以外的USB设备)
  • 18. 基于ES实战海量数据检索
  • SpringBoot和Redis的交互数据操作以及Redis的持久化/删除策略和缓存问题
  • Butterworth filter的运行原理
  • 掌握SQL的威力:批量更新与删除的艺术
  • 《新一代数据可视化分析工具应用指南》正式开放下载
  • 数据结构与算法——BFS(广度优先搜索)
  • 登录 k8s-Dashboard 显示 Your connection is not private
  • 【Bifrost】ubuntu24.04 远程构建及clion设置编码风格google
  • 批量查询全国快递单号:高效追踪物流信息
  • DVWA | CSRF(LowMedium)攻击的渗透实践
  • Tmagic-editor低代码底层拖拽库Moveable示例学习
  • 公开测评:文件防泄密系统哪家好|4款文件防泄密软件推荐
  • 【wiki知识库】09.欢迎页面添加(统计浏览量)Vue修改
  • ui自动化难点
  • 静态路由与默认路由和实验以及ARP工作原理
  • 美国洛杉矶大带宽服务器的运维与监控
  • AtCoder Beginner Contest 367 A~D
  • oracle 保留两位小数