controller,service、mapper、dao、entity
时间: 2025-02-04 10:37:30 浏览: 44
### Spring框架各组件的作用和区别
#### Controller层
负责接收用户的HTTP请求并调用相应的业务逻辑处理。该层主要通过`@Controller`或`@RestController`注解来标记类,通常会定义RESTful API接口,用于与前端交互。此层不涉及具体的业务逻辑实现[^2]。
```java
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
// 调用服务层获取用户信息
User user = userService.findById(id);
return ResponseEntity.ok(user);
}
}
```
#### Service层
承担着核心的业务逻辑操作,是应用程序中最重要的一部分。这里实现了所有的业务规则和服务功能,并协调其他层次的工作流程。为了提高可测试性和灵活性,建议将复杂的业务逻辑封装在此处而不是放在控制器中[^1]。
```java
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User findById(Long id){
Optional<User> optionalUser = userRepository.findById(id);
return optionalUser.orElseThrow(() -> new EntityNotFoundException("User not found"));
}
}
```
#### Mapper/DAO层
这两个术语经常互换使用,在某些情况下可能指代相同的概念;但在更严格的意义上:
- **Mapper**: 主要是指MyBatis等ORM工具中的映射文件或者接口,用来描述如何查询、更新、删除以及保存数据到关系型数据库表里。
- **DAO (Data Access Object)**: 是一种设计模式,它提供了访问持久化存储的方法而不需要暴露底层细节给上层模块。在实际开发过程中,如果采用JPA,则可能会看到更多关于`Repository`接口的应用而非传统的DAO实现方式[^3]。
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
// 或者对于 MyBatis 的情况
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id=#{id}")
User selectByPrimaryKey(Integer id);
int deleteByPrimaryKey(Integer id);
int insert(User record);
int updateByPrimaryKey(User record);
}
```
#### Entity层
实体类代表了应用领域内的模型对象,它们应该尽可能简单地表示业务域的概念。这些类一般只包含基本的数据成员及其对应的getter/setter方法,有时也会重写toString()以便于调试输出。此外,还应当具备默认构造器和支持序列化的特性以满足不同场景下的需求。
```java
@Entity
@Table(name="users")
public class User implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String name;
// Getters and Setters omitted for brevity
@Override
public String toString(){
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
```
阅读全文
相关推荐



















