为什么要用impl继承service层_讨论:Service层需要接口吗?
时间: 2023-08-03 09:03:48 浏览: 306
使用impl继承service层是为了实现Service层中的方法,同时避免在Controller层中直接调用DAO层的方法。Service层需要接口的原因是为了降低耦合度,提高代码的可扩展性和可维护性。通过定义Service接口,可以使得不同的实现类实现Service接口中的方法,从而实现代码的灵活性和可扩展性。同时,通过使用Service接口,可以使得Controller层和Service层之间的耦合度降低,从而使得代码更加易于维护和升级。
相关问题
com.baomidou.mybatisplus.service.impl.ServiceImpl是mybatis插件里的吗?
不是的,com.baomidou.mybatisplus.service.impl.ServiceImpl是MyBatis-Plus框架中提供的基于MyBatis的Service实现类,它是通过继承MyBatis-Plus框架提供的BaseMapper和IService接口实现的。MyBatis-Plus是一个增强MyBatis功能的框架,提供了一系列简化开发的工具和方法,使得开发者使用MyBatis更加方便快捷。
如何使用com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
使用 `com.baomidou.mybatisplus.extension.service.impl.ServiceImpl` 非常简单,只需要按照以下步骤即可:
1. 创建 Service 接口,继承 `com.baomidou.mybatisplus.extension.service.IService` 接口,定义自己的业务方法。例如:
```java
public interface UserService extends IService<User> {
List<User> listUsers();
}
```
2. 创建 Service 接口的默认实现类,继承 `com.baomidou.mybatisplus.extension.service.impl.ServiceImpl` 类,并实现 Service 接口中定义的自定义业务方法。例如:
```java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public List<User> listUsers() {
return this.list();
}
}
```
在上面的代码中,`UserMapper` 是继承了 MyBatis-Plus 的 `BaseMapper` 接口的 Mapper 接口,`User` 是实体类。
3. 在 Controller 中注入 Service,并使用 Service 中的业务方法。例如:
```java
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List<User> getUsers() {
return userService.listUsers();
}
}
```
在上面的代码中,`@Autowired` 注解可以自动注入 Service 的实现类,`@GetMapping("/users")` 注解可以将该方法映射到 `/users` 路径,返回 Service 中查询到的用户列表。
通过以上步骤,我们就可以快速地使用 MyBatis-Plus 的 ServiceImpl 类编写 Service 层的代码了。
阅读全文