MVC三层架构简单示例

本文详细介绍了Java中MVC架构中Controller层的职责和使用方法,以及Service层和Mapper/DAO层如何处理业务逻辑和数据库操作,展示了如何通过分层设计提高代码的可维护性和扩展性。
摘要由CSDN通过智能技术生成

在Java中,常用的多层架构模式是MVC(Model-View-Controller),其中涉及到的代码层级包括Controller、Service、Mapper/DAO

1、Controller层

负责接收用户的请求,处理用户的输入,并将结果返回给用户。其作用是将用户的请求转发给Service层进行处理,并将Service层返回的结果进行相应的封装和返回给前端页面或客户端。

示例代码:

@RestController
@RequestMapping("/user")
public class UserController {
    
    @Autowired
    private UserService userService;
    
    @GetMapping("/{id}")
    public User getUserById(@PathVariable("id") Long id) {
        return userService.getUserById(id);
    }
    
    @PostMapping("/")
    public User createUser(@RequestBody UserDto userDto) {
        return userService.createUser(userDto);
    }
}


----------------------------对get、post请求中的相关注解进行拓展(开始)---------------------------------------

@PathVariable(“id”)可以直接获取请求中的参数
如果不使用@PathVariable(“id”),就需要通过HttpServletRequest来获取请求中的参数
HttpServletRequest使用示例

@GetMapping("/user")
public User getUserById(HttpServletRequest request) {
    int id = Integer.parseInt(request.getParameter("id"));
    // 根据id查询用户
    User user = userService.getUserById(id);
    return user;
}

@PathVariable通常用于GET请求,@RequestBody通常用于POST请求
@PathVariable获取的是url路径中的参数,@RequestBody获取的是请求体中的参数

对于post请求,获取参数的方式有@RequestBody和@RequestParam两种,@RequestParam从请求中获取单个参数的值;

@GetMapping("/example")
public void example(@RequestParam String name) {
    // 对 name 参数进行处理
}

@RequestBody用于从请求中获取请求体的内容,并将其转换为指定类型的对象,通常用于接收 JSON 或 XML 格式的请求数据,然后将其转换为对象进行处理。

@PostMapping("/example")
public void example(@RequestBody User user) {
    // 对 user 对象进行处理
}

----------------------------对get、post请求中的相关注解进行拓展(结束)---------------------------------------

2. Service层

负责实现业务逻辑。其作用是对业务逻辑进行处理,包括数据校验、数据处理、业务计算等。Service层通常通过调用Mapper/DAO层的接口来访问数据库,并对数据库操作进行封装。

示例代码:

@Service
public class UserService {
    
    @Autowired
    private UserMapper userMapper;
    
    public User getUserById(Long id) {
        return userMapper.getUserById(id);
    }
    
    @Transactional
    public User createUser(UserDto userDto) {
        // 进行数据校验和处理
        User user = new User();
        user.setName(userDto.getName());
        // ...其他逻辑
        
        // 调用Mapper/DAO层进行数据持久化
        userMapper.insert(user);
        
        return user;
    }
}
  1. Mapper/DAO层:负责数据的访问和操作。其作用是与数据库进行交互,进行增、删、改、查等操作。

示例代码:

@Mapper
public interface UserMapper {
    
    User getUserById(Long id);
    
    void insert(User user);
    
    void update(User user);
    
    void delete(Long id);
}

通过以上三层之间的结构和调用关系,可以实现数据的请求和处理的分离,提高代码的可维护性和可扩展性。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值