刚开始上手Java和Spring时,就被controller,service,mapper,entity这几个词搞懵了,搞不懂这些究竟代表什么,感觉使用golang开发的时候也没太接触过这些名词啊~
经过两三个月的开发后,逐渐搞懂了这几个词的意义,也对为什么要这么分有了一点见解,总结了一下希望能帮到各位刚刚接触Java和Spring的同学。
组件介绍
-
Entity(实体)
- 作用:代表数据库中的表结构,是数据模型的基本单元。通常包含属性和这些属性的getter/setter方法。可以简单理解成就是数据库表在代码里面定义一遍。
- 示例:用户实体类
User
,包含用户ID、用户名、密码等字段。
-
Mapper(映射器)
- 作用:负责将Entity对象与数据库记录进行映射,执行CRUD(创建、读取、更新、删除)操作。在MyBatis等ORM框架中,Mapper通常是一个Interface。简单来说,就是如何对Entity进行增删改查,比如对age是某个范围的Entity进行count,这种就可以通过SQL在Mapper层实现。
- 示例:
UserMapper
接口,定义与用户表相关的SQL操作。
-
Service(服务)
-
Controller(控制器)
- 作用:接收客户端请求,调用Service层处理请求,返回处理结果。通常负责处理HTTP请求和响应。简单来说就是实现RestApi对外暴露业务。
- 示例:
UserController
类,处理与用户相关的HTTP请求,如注册、登录请求。
简单业务示例:用户注册
假设我们正在开发一个简单的用户管理系统,其中包含用户注册功能。
Entity
java">public class User {private Long id;private String username;private String password;// Getters and Setterspublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
Mapper
java">public interface UserMapper {void insertUser(User user);// 其他CRUD方法...
}
(在实际使用中,如果是MyBatis,这里会是一个接口,SQL语句会通过XML或注解定义。)
Service
java">public class UserService {private UserMapper userMapper;public UserService(UserMapper userMapper) {this.userMapper = userMapper;}public void registerUser(String username, String password) {User user = new User();user.setUsername(username);user.setPassword(password); // 实际应用中应加密处理userMapper.insertUser(user);}
}
Controller
java">import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/users")
public class UserController {private UserService userService;public UserController(UserService userService) {this.userService = userService;}@PostMapping("/register")public String register(@RequestParam String username, @RequestParam String password) {userService.registerUser(username, password);return "User registered successfully!";}
}
说明
- Entity:
User
类代表用户表,包含基本的用户信息。 - Mapper:
UserMapper
接口定义了插入用户的方法。实际实现(如SQL语句)会根据使用的ORM框架不同而有所差异。 - Service:
UserService
类包含用户注册的业务逻辑,即创建一个新用户并调用Mapper插入到数据库。 - Controller:
UserController
类处理用户注册的HTTP POST请求,调用UserService
完成注册。
这个示例展示了如何通过分层架构组织代码,使每一层都有明确的职责,便于维护和扩展。