在spring boot中遵循MVC的结构有很多方法
在这里,我有一个解决方案,您可以在哪里跟进
这是我的文件结构
UserController 和 @RestController //所有 Get 和 Post API 调用
UserService with @Service //Define Business Logic here
UserRegistrationReqBean @Data //用于 Lombok 并减少样板文件
UserMaster @Entity //对于表架构
首先创建一个控制器类(例如我正在使用用户管理系统)
@RestController
@RequestMapping("/v1.0")
public class UserController {
@Autowired
UserService userService;
@GetMapping("/getUsers")
public List<UserMaster> getUsers() {
return userService.getUsers();
}
@PostMapping("/registerUser")
public UserMaster registerUser(@RequestBody RegisterUserReqBean reqBean) {
return userService.registerUser(reqBean);
}
// @PostMapping("/updateUser")
// public UserMaster updateUser() {
// UserMaster updatedUser = new UserMaster();
// return updatedUser;
// }
}
一旦您创建了控制器,然后在 Service 层中使用 @Service Annotation 定义其业务逻辑
@Service
public class UserService {
@Autowired
UserMasterDao userMasterDao;
public List<UserMaster> getUsers() {
List<UserMaster> listOfUser = userMasterDao.findAll();
return listOfUser;
}
public UserMaster registerUser(RegisterUserReqBean reqBean) {
UserMaster userMaster = new UserMaster(reqBean);
UserMaster updatedUserMaster = userMasterRepo.save(userMaster);
return updatedUserMaster;
}
// public UserMaster updateUser() {
//
// }
}
创建一个带有@Repository 注解的 Repo 类来做一些 db 相关的更改
import org.springframework.data.jpa.repository.JpaRepository;
import com.sample.user.entity.UserMaster;
@Repository
public interface UserMasterRepo extends JpaRepository<UserMaster, Integer> {
//you can create your own JPA queries here
}
这里我的存储库是空的,因为我正在使用它的预定义查询
than 使用定义数据库表模式的@Entity 注释实现实体类
使用 maven Lombok 依赖 减少 Entity 和请求 Bean 中的样板代码
@Entity
@Data
@Table(name = "kd_user_master")
public class UserMaster {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "user_name")
private String userName;
@Column(name = "email")
private String email;
@Column(name = "mobile_number")
private String mobileNumber;
@Column(name = "password")
private String password;
@Column(name = "country")
private String country;
@Column(name = "created_at")
private Date createdAt;
@Column(name = "updated_at")
private Date updatedAt;
//this parameterized cunstructer is used for having new object of userMaster //schema so we can directly save it to db
public UserMaster(RegisterUserReqBean reqBean) {
super();
this.firstName = reqBean.getFirstName();
this.lastName = reqBean.getLastName();
this.userName = reqBean.getUserName();
this.email = reqBean.getEmail();
this.mobileNumber = reqBean.getMobileNumber();
this.password = reqBean.getPassword();
this.country = reqBean.getCountry();
this.createdAt = new Date();
this.updatedAt = new Date();
}
}
然后我们将创建一个DAO(数据访问对象)接口及其实现类
public interface UserMasterDao{
UserMaster save(userMaster user);
List<UserMaster> findAll();
}
它的实现类
public class UserMasterDaoImpl implements UserMasterDao{
@Autowired
UserMasterRepo repo;
@Override
UserMaster save(UserMaster user){
return repo.save(user);
}
@Override
List<UserMaster> findAll(){
return repo.findAll();
}
}
在业务逻辑和数据库模式之后,我们需要为发布请求定义请求 bean,因为它不允许我们请求参数,或者我们可以说查询参数
@Data
public class RegisterUserReqBean {
private String firstName;
private String lastName;
private String userName;
private String email;
private String mobileNumber;
private String password;
private String country;
private Date createdAt;
private Date updatedAt;
}
我们在控制器类和服务类中使用这个请求 bean 来进行用户注册