• 前置条件
    • 介绍
    • Service 接口类
      • UserService.java 代码
      • TaskService.java 代码
    • Service 实现类
      • UserServiceImpl.java 代码
      • TaskServiceImpl.java 代码

    前置条件

    在开发之前,请确保

    • 本地项目已经创建成功,详见 新建项目
    • 数据库创建成功,详见 初始化数据库

    介绍

    demo需涉及到app层的service接口类与其实现类。

    应用层Service主要有以下特性:

    • 负责事务处理,所以事务的注解可以在这一层的service中使用。
    • 不做单元测试,只做验收测试。
    • 可能会有比较多的依赖组件(领域服务),使用field注入依赖的组件。
    • 方法要求无状态,只接受dto元数据类型作为参数。

    Service 接口类

    • Service 接口类定义了业务操作的一系列接口,并不提供实现,具体实现需要通过Service实现层提供,所以属于供应方的服务接口层。创建在项目模块的 xxx.app.service 包下。

    UserService.java 代码

    1. package io.choerodon.todo.app.service;
    2. import io.choerodon.todo.infra.dto.UserDTO;
    3. public interface UserService {
    4. UserDTO createOne(UserDTO userDTO);
    5. }

    TaskService.java 代码

    1. package io.choerodon.todo.app.service;
    2. import io.choerodon.todo.infra.dto.TaskDTO;
    3. public interface TaskService {
    4. TaskDTO createOne(TaskDTO taskDTO);
    5. TaskDTO queryById(Long id);
    6. TaskDTO queryByTaskNumber(String taskNumber);
    7. TaskDTO update(TaskDTO taskDTO);
    8. void deleteById(Long id);
    9. }

    Service 实现类

    • Service 接口的具体实现通过服务实现层提供,所以属于供应方的服务实现层。创建在项目模块的 xxx.app.service.impl 包下。
    • 实现类,需要用 @Service 标注

    UserServiceImpl.java 代码

    1. package io.choerodon.todo.app.service.impl;
    2. // 省略import
    3. @Service
    4. public class UserServiceImpl implements UserService {
    5. private UserMapper userMapper;
    6. public UserServiceImpl(UserMapper userMapper) {
    7. this.userMapper = userMapper;
    8. }
    9. @Override
    10. public UserDTO createOne(UserDTO userDTO) {
    11. if (userMapper.insert(userDTO) != 1) {
    12. throw new CommonException("error.user.insert");
    13. }
    14. return userDTO;
    15. }
    16. }

    TaskServiceImpl.java 代码

    1. package io.choerodon.todo.app.service.impl;
    2. // 省略import
    3. @Service
    4. public class TaskServiceImpl implements TaskService {
    5. private TaskMapper taskMapper;
    6. public TaskServiceImpl(TaskMapper taskMapper) {
    7. this.taskMapper = taskMapper;
    8. }
    9. @Override
    10. public TaskDTO createOne(TaskDTO taskDTO) {
    11. if (taskMapper.insert(taskDTO) != 1) {
    12. throw new CommonException("error.task.insert");
    13. }
    14. return taskDTO;
    15. }
    16. @Override
    17. public TaskDTO queryById(Long id) {
    18. return taskMapper.selectByPrimaryKey(id);
    19. }
    20. @Override
    21. public TaskDTO queryByTaskNumber(String taskNumber) {
    22. return taskMapper.queryByTaskNumber(taskNumber);
    23. }
    24. @Override
    25. public TaskDTO update(TaskDTO taskDTO) {
    26. if (taskMapper.updateByPrimaryKeySelective(taskDTO) != 1) {
    27. throw new CommonException("error.task.update");
    28. }
    29. return queryById(taskDTO.getId());
    30. }
    31. @Override
    32. public void deleteById(Long id) {
    33. taskMapper.deleteByPrimaryKey(id);
    34. }
    35. }