我的日常开发记录日志
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)

我的日常开发记录日志

never give up
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)
  • laravel

  • thinkphp

  • swoole

  • workman

  • php

  • gpt

  • java

    • map和list遍历
    • 基本的类
    • 静态方法和属性
    • java包相关
    • 基础mvc结构
      • 注解理解
      • 泛型
      • 数据库查询
    • 后端
    • java
    窝窝侠
    2024-08-06

    基础mvc结构

    在 Java 中,MVC(Model-View-Controller)是一种常用的软件架构模式,用于组织代码以实现清晰的分离关注点。Spring Boot 提供了强大的支持来实现 MVC 架构,帮助开发人员构建可维护和可扩展的 Web 应用程序。以下是如何在 Spring Boot 中实现 MVC 结构的详细步骤:

    # 1. 项目结构

    在 Spring Boot 项目中,通常将代码分为以下几个主要包:

    src
    └── main
        └── java
            └── com
                └── example
                    ├── MySpringBootApplication.java
                    ├── controller
                    ├── model
                    ├── service
                    └── repository
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    • Controller: 处理用户请求,并与服务层进行交互。
    • Model: 定义应用程序的数据结构(即实体类)。
    • Service: 业务逻辑层,处理具体的业务操作。
    • Repository: 数据访问层,通常与数据库进行交互。

    # 2. 实现 MVC 结构

    # 2.1. 创建模型(Model)

    模型表示应用程序的数据结构,通常与数据库中的表对应。可以使用 JPA 实体类来定义模型。

    示例:model/User.java

    package com.example.model;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    
    @Entity
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
        private String name;
        private String email;
    
        // Getters and Setters
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42

    # 2.2. 创建数据访问层(Repository)

    数据访问层使用 Spring Data JPA 提供的 JpaRepository 接口来访问数据库。

    示例:repository/UserRepository.java

    package com.example.repository;
    
    import com.example.model.User;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface UserRepository extends JpaRepository<User, Long> {
        // 可以在这里定义自定义查询方法
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    # 2.3. 创建服务层(Service)

    服务层包含业务逻辑,并与数据访问层交互。

    示例:service/UserService.java

    package com.example.service;
    
    import com.example.model.User;
    import com.example.repository.UserRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class UserService {
    
        private final UserRepository userRepository;
    
        @Autowired
        public UserService(UserRepository userRepository) {
            this.userRepository = userRepository;
        }
    
        public List<User> findAllUsers() {
            return userRepository.findAll();
        }
    
        public User findUserById(Long id) {
            return userRepository.findById(id).orElse(null);
        }
    
        public User saveUser(User user) {
            return userRepository.save(user);
        }
    
        public void deleteUser(Long id) {
            userRepository.deleteById(id);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35

    # 2.4. 创建控制器(Controller)

    控制器处理 HTTP 请求,并调用服务层以获取数据或执行操作。

    示例:controller/UserController.java

    package com.example.controller;
    
    import com.example.model.User;
    import com.example.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/api/users")
    public class UserController {
    
        private final UserService userService;
    
        @Autowired
        public UserController(UserService userService) {
            this.userService = userService;
        }
    
        @GetMapping
        public List<User> getAllUsers() {
            return userService.findAllUsers();
        }
    
        @GetMapping("/{id}")
        public ResponseEntity<User> getUserById(@PathVariable Long id) {
            User user = userService.findUserById(id);
            return user != null ? ResponseEntity.ok(user) : ResponseEntity.notFound().build();
        }
    
        @PostMapping
        public User createUser(@RequestBody User user) {
            return userService.saveUser(user);
        }
    
        @DeleteMapping("/{id}")
        public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
            userService.deleteUser(id);
            return ResponseEntity.noContent().build();
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43

    # 3. 运行和测试

    1. 配置数据库: 在 application.properties 文件中配置数据库连接信息。

      spring.datasource.url=jdbc:mysql://localhost:3306/mydb
      spring.datasource.username=root
      spring.datasource.password=password
      spring.jpa.hibernate.ddl-auto=update
      
      1
      2
      3
      4
    2. 启动应用程序: 运行主应用程序类 MySpringBootApplication。

    3. 测试 API: 可以使用工具如 Postman 或 cURL 测试上述 RESTful API 端点。

    # 4. 总结

    • Model: 定义数据结构和实体类。
    • Repository: 负责与数据库交互。
    • Service: 包含业务逻辑,调用数据访问层。
    • Controller: 处理请求并调用服务层。

    通过这种方式,Spring Boot 项目可以利用 MVC 模式实现良好的代码组织和可维护性。

    在线编辑 (opens new window)
    上次更新: 2025/02/25, 18:30:54
    java包相关
    注解理解

    ← java包相关 注解理解→

    最近更新
    01
    showprocess用法
    04-29
    02
    vue3中尖括号和冒号的使用细则
    04-29
    03
    sd使用
    02-22
    更多文章>
    🖥️

    © 2025窝窝侠 💌 豫ICP备20005263号-2 🛀 Theme by 💝 Vdoing && 小胖墩er

    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×