- 前置条件
- 介绍
- 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 代码
package io.choerodon.todo.app.service;import io.choerodon.todo.infra.dto.UserDTO;public interface UserService {UserDTO createOne(UserDTO userDTO);}
TaskService.java 代码
package io.choerodon.todo.app.service;import io.choerodon.todo.infra.dto.TaskDTO;public interface TaskService {TaskDTO createOne(TaskDTO taskDTO);TaskDTO queryById(Long id);TaskDTO queryByTaskNumber(String taskNumber);TaskDTO update(TaskDTO taskDTO);void deleteById(Long id);}
Service 实现类
Service接口的具体实现通过服务实现层提供,所以属于供应方的服务实现层。创建在项目模块的xxx.app.service.impl包下。- 实现类,需要用
@Service标注
UserServiceImpl.java 代码
package io.choerodon.todo.app.service.impl;// 省略import@Servicepublic class UserServiceImpl implements UserService {private UserMapper userMapper;public UserServiceImpl(UserMapper userMapper) {this.userMapper = userMapper;}@Overridepublic UserDTO createOne(UserDTO userDTO) {if (userMapper.insert(userDTO) != 1) {throw new CommonException("error.user.insert");}return userDTO;}}
TaskServiceImpl.java 代码
package io.choerodon.todo.app.service.impl;// 省略import@Servicepublic class TaskServiceImpl implements TaskService {private TaskMapper taskMapper;public TaskServiceImpl(TaskMapper taskMapper) {this.taskMapper = taskMapper;}@Overridepublic TaskDTO createOne(TaskDTO taskDTO) {if (taskMapper.insert(taskDTO) != 1) {throw new CommonException("error.task.insert");}return taskDTO;}@Overridepublic TaskDTO queryById(Long id) {return taskMapper.selectByPrimaryKey(id);}@Overridepublic TaskDTO queryByTaskNumber(String taskNumber) {return taskMapper.queryByTaskNumber(taskNumber);}@Overridepublic TaskDTO update(TaskDTO taskDTO) {if (taskMapper.updateByPrimaryKeySelective(taskDTO) != 1) {throw new CommonException("error.task.update");}return queryById(taskDTO.getId());}@Overridepublic void deleteById(Long id) {taskMapper.deleteByPrimaryKey(id);}}
