简单的Controller---->Service---->ServiceImpl---->Mapper调用实例

本文展示了一个简单的Java应用示例,说明了Controller如何通过Service、ServiceImpl调用Mapper进行数据操作。Controller接收请求,调用Service接口,Service接口定义业务逻辑,ServiceImpl实现逻辑并通过Mapper与数据库交互。这种方式实现了层与层之间的解耦,提高代码可维护性和测试性。
摘要由CSDN通过智能技术生成

以下是一个简单的示例,展示了Controller、Service、ServiceImpl和Mapper之间的调用关系。

  1. 首先,创建一个实体类User:
 @Data
 public class User {
    private Long id;
    private String name;
    // 省略其他属性、构造方法和getter/setter方法
}
  1. 创建Controller类UserController,用于接收请求并调用Service层的方法:
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;
     @PostMapping
    public void saveUser(@RequestBody User user) {
        userService.saveUser(user);
    }
     @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }
     @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }
}
  1. 接下来,创建Service接口UserService,定义相关的方法:
public interface UserService {
    void saveUser(User user);
    User getUserById(Long id);
    List<User> getAllUsers();
}
  1. 然后,创建ServiceImpl实现类UserServiceImpl,用于实现具体的业务逻辑:
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
     @Override
    public void saveUser(User user) {
        userMapper.save(user);
    }
     @Override
    public User getUserById(Long id) {
        return userMapper.getById(id);
    }
     @Override
    public List<User> getAllUsers() {
        return userMapper.getAll();
    }
}
  1. 最后创建Mapper接口UserMapper:
public interface UserMapper {
    void save(User user);
    User getById(Long id);
    List<User> getAll();
}

在这个示例中,Controller层通过@Autowired注解注入了UserService接口的实现类UserServiceImpl,然后在相应的请求处理方法中调用UserService的方法来处理业务逻辑。UserService接口定义了保存用户、根据ID获取用户和获取所有用户的方法,具体的实现则在UserServiceImpl中完成。UserServiceImpl中通过@Autowired注解注入了UserMapper接口的实现类,并在相应的方法中调用UserMapper的方法来实现数据持久化操作。
这样,当客户端发送请求时,Controller层会调用相应的方法处理请求,然后Service层会根据业务逻辑进行处理,并最终通过Mapper层实现数据的存储和查询。从而实现了Controller---->Service---->ServiceImpl---->Mapper的调用。

在Java的接口中,方法通常是没有方法体的,只有方法的声明。因此,Service接口中的方法不能有方法体,无法直接返回给Controller类。在Service接口中,定义的方法只是方法的签名,用于定义业务逻辑的契约。具体的方法实现是在ServiceImpl类中完成的。
在Service接口中定义的方法只是一个抽象的方法声明,它们没有具体的实现代码。实际的业务逻辑实现是在ServiceImpl类中编写的,ServiceImpl类实现了Service接口,并提供了具体的方法实现。在ServiceImpl类中,可以通过调用Mapper层的方法来访问数据库或执行其他操作,并根据业务逻辑的需要进行处理。
当Service接口中的方法被调用时,实际上是调用ServiceImpl类中对应的方法。在ServiceImpl类中,可以执行具体的业务逻辑,并将结果返回给调用Service接口方法的地方。最终,结果会通过Service接口方法返回给Controller类,以便进行响应和处理。这样实现了Service层和Controller层之间的解耦,提高了代码的可维护性和可测试性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值