当前位置: 首页 > article >正文

【gopher的java学习笔记】一文讲懂controller,service,mapper,entity是什么

刚开始上手Java和Spring时,就被controller,service,mapper,entity这几个词搞懵了,搞不懂这些究竟代表什么,感觉使用golang开发的时候也没太接触过这些名词啊~
经过两三个月的开发后,逐渐搞懂了这几个词的意义,也对为什么要这么分有了一点见解,总结了一下希望能帮到各位刚刚接触Java和Spring的同学。

组件介绍

  1. Entity(实体)

    • 作用:代表数据库中的表结构,是数据模型的基本单元。通常包含属性和这些属性的getter/setter方法。可以简单理解成就是数据库表在代码里面定义一遍。
    • 示例:用户实体类User,包含用户ID、用户名、密码等字段。
  2. Mapper(映射器)

    • 作用:负责将Entity对象与数据库记录进行映射,执行CRUD(创建、读取、更新、删除)操作。在MyBatis等ORM框架中,Mapper通常是一个Interface。简单来说,就是如何对Entity进行增删改查,比如对age是某个范围的Entity进行count,这种就可以通过SQL在Mapper层实现。
    • 示例UserMapper接口,定义与用户表相关的SQL操作。
  3. Service(服务)

    • 作用:包含业务逻辑,是Controller和Mapper之间的桥梁。处理复杂的业务逻辑,调用一个或多个Mapper。比如开发一个在线学习平台时,查询用户的学习情况可能就需要同时调用“用户”的Mapper(获取用户对某个课程id的课程的学习信息,比如是否已学习、学习进度等)和“课程”的Mapper(获取某个课程id的详细课程信息,比如课程标题、课程封面)来一起组合出用户学习过的课程的信息,这一部分逻辑就可以在Service层实现。
    • 示例UserService类,包含用户注册、登录、更新信息等业务逻辑。
  4. Controller(控制器)

    • 作用:接收客户端请求,调用Service层处理请求,返回处理结果。通常负责处理HTTP请求和响应。简单来说就是实现RestApi对外暴露业务。
    • 示例UserController类,处理与用户相关的HTTP请求,如注册、登录请求。

简单业务示例:用户注册

假设我们正在开发一个简单的用户管理系统,其中包含用户注册功能。

Entity
public class User {
    private Long id;
    private String username;
    private String password;

    // Getters and Setters
    public 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
public interface UserMapper {
    void insertUser(User user);
    // 其他CRUD方法...
}

(在实际使用中,如果是MyBatis,这里会是一个接口,SQL语句会通过XML或注解定义。)

Service
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
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!";
    }
}

说明

  • EntityUser类代表用户表,包含基本的用户信息。
  • MapperUserMapper接口定义了插入用户的方法。实际实现(如SQL语句)会根据使用的ORM框架不同而有所差异。
  • ServiceUserService类包含用户注册的业务逻辑,即创建一个新用户并调用Mapper插入到数据库。
  • ControllerUserController类处理用户注册的HTTP POST请求,调用UserService完成注册。

这个示例展示了如何通过分层架构组织代码,使每一层都有明确的职责,便于维护和扩展。


http://www.kler.cn/a/517778.html

相关文章:

  • 基于 WEB 开发的在线学习系统设计与开发
  • 【测试】UI自动化测试
  • 飞牛NAS安装过程中的docker源问题
  • 左右互博02-unidbg主动调用外层so函数
  • MongoDB 备份与恢复综述
  • 12Express简易实战项目(编写api)
  • ChatGPT大模型极简应用开发-CH5-使用 LangChain 框架和插件增强 LLM 的功能
  • pip国内源汇总
  • mysql-06.JDBC
  • 财税资金数据管理一体化大屏 | 智慧金融合集
  • YOLOv11实战天气图像识别
  • openstack单机安装
  • 激光线扫相机无2D图像的标定方案
  • Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250124
  • 朴素贝叶斯(Naive Bayes)详解
  • 寒假刷题Day13
  • UDP協議與代理IP介紹
  • 携程旅行 登录分析
  • windows系统如何检查是否开启了mongodb服务
  • Spring 面试题【每日20道】【其一】
  • C# OpenCV机器视觉:车道检测
  • HarmonyOS Next构建工具 lycium 原理介绍
  • uniapp商城之商品分类
  • 【C++高并发服务器WebServer】-3:进程控制(退出进程、孤儿进程、僵尸进程、进程回收)
  • 大模型GUI系列论文阅读 DAY3续4:《TREE SEARCH FOR LANGUAGE MODEL AGENTS》
  • 【机器学习】自定义数据集使用框架的线性回归方法对其进行拟合