持久层、业务层和控制层的详细阐述

一、持久层

1、持久层的定义

持久层是在应用程序和数据库之间,提供持久化数据存储的一个层次。其主要任务是将应用程序中的数据持久化到数据库中。

2、持久层的作用

持久层的作用就是为了解决数据存储和数据访问的问题。在应用程序中,将数据转化为对象,经过持久化机制,将数据保存到数据库中,从而实现应用程序和数据库之间的数据交互。

3、持久层的实现


public interface UserDao {
    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 新增影响行数
     */
    int addUser(User user);

    /**
     * 根据ID查询用户
     *
     * @param id 用户ID
     * @return 用户信息
     */
    User getUserById(Integer id);

    /**
     * 根据用户名查询用户
     *
     * @param username 用户名
     * @return 用户信息
     */
    User getUserByUsername(String username);

    /**
     * 更新用户
     *
     * @param user 用户信息
     * @return 更新影响行数
     */
    int updateUser(User user);

    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return 删除影响行数
     */
    int deleteUser(Integer id);
}

二、业务层

1、业务层的定义

业务层是在持久层和控制层之间,负责处理数据的一层。其主要任务是对数据库中的数据进行加工和处理,使其更加符合业务需求。

2、业务层的作用

业务层的作用是为了解决业务逻辑的问题,对持久层的数据进行加工和处理,使其更加符合业务需求,为控制层提供数据。

3、业务层的实现


@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 新增结果
     */
    @Override
    public Result addUser(User user) {
        User tempUser = userDao.getUserByUsername(user.getUsername());
        if (tempUser != null) {
            return Result.fail("用户名已存在");
        }
        int rows = userDao.addUser(user);
        return ResultUtil.isSuccess(rows);
    }

    /**
     * 根据ID查询用户
     *
     * @param id 用户ID
     * @return 用户信息
     */
    @Override
    public User getUserById(Integer id) {
        return userDao.getUserById(id);
    }

    /**
     * 根据用户名查询用户
     *
     * @param username 用户名
     * @return 用户信息
     */
    @Override
    public User getUserByUsername(String username) {
        return userDao.getUserByUsername(username);
    }

    /**
     * 更新用户
     *
     * @param user 用户信息
     * @return 更新结果
     */
    @Override
    public Result updateUser(User user) {
        int rows = userDao.updateUser(user);
        return ResultUtil.isSuccess(rows);
    }

    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return 删除结果
     */
    @Override
    public Result deleteUser(Integer id) {
        int rows = userDao.deleteUser(id);
        return ResultUtil.isSuccess(rows);
    }
}

三、控制层

1、控制层的定义

控制层是应用程序中最上层的一层,在持久层和业务层之上。其主要任务是接收用户请求,处理用户提交的信息,并返回响应结果。

2、控制层的作用

控制层的作用是为了解决用户请求的问题,接收用户提交的信息,通过业务层将相关信息处理,并返回响应结果给用户。

3、控制层的实现


@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 新增结果
     */
    @PostMapping("/add")
    public Result addUser(@RequestBody User user) {
        return userService.addUser(user);
    }

    /**
     * 根据ID查询用户
     *
     * @param id 用户ID
     * @return 用户信息
     */
    @GetMapping("/getById")
    public User getUserById(@RequestParam("id") Integer id) {
        return userService.getUserById(id);
    }

    /**
     * 根据用户名查询用户
     *
     * @param username 用户名
     * @return 用户信息
     */
    @GetMapping("/getByUsername")
    public User getUserByUsername(@RequestParam("username") String username) {
        return userService.getUserByUsername(username);
    }

    /**
     * 更新用户
     *
     * @param user 用户信息
     * @return 更新结果
     */
    @PostMapping("/update")
    public Result updateUser(@RequestBody User user) {
        return userService.updateUser(user);
    }

    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return 删除结果
     */
    @PostMapping("/delete")
    public Result deleteUser(@RequestParam("id") Integer id) {
        return userService.deleteUser(id);
    }
}

原创文章,作者:XTMKB,如若转载,请注明出处:https://www.506064.com/n/368127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XTMKBXTMKB
上一篇 2025-04-11 14:01
下一篇 2025-04-12 01:12

相关推荐

  • ORM持久层

    ORM(对象关系映射)是一种编程技术,它将面向对象的编程语言中的对象与关系型数据库中的表进行映射。通过ORM,我们可以用面向对象的方式操作数据库,减少了手写SQL语句的复杂度以及对…

    编程 2025-04-28
  • 信用卡业务风险分析

    信用卡业务风险分析是指通过对银行信用卡业务中的各类交易信息进行收集、整理、分析,发现各种风险因素,及时预警,有效防范和控制各类风险。 一、数据收集和预处理 数据收集是信用卡业务风险…

    编程 2025-04-27
  • Java持久层框架的复合主键实现

    用Java持久层框架来操作数据库时,复合主键是常见的需求。这篇文章将详细阐述javax.persistence复合主键的实现方式,并提供完整的示例代码。 一、复合主键的定义 复合主…

    编程 2025-04-27
  • index.html怎么打开 – 详细解析

    一、index.html怎么打开看 1、如果你已经拥有了index.html文件,那么你可以直接使用任何一个现代浏览器打开index.html文件,比如Google Chrome、…

    编程 2025-04-25
  • Resetful API的详细阐述

    一、Resetful API简介 Resetful(REpresentational State Transfer)是一种基于HTTP协议的Web API设计风格,它是一种轻量级的…

    编程 2025-04-25
  • AXI DMA的详细阐述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基于AMBA…

    编程 2025-04-25
  • neo4j菜鸟教程详细阐述

    一、neo4j介绍 neo4j是一种图形数据库,以实现高效的图操作为设计目标。neo4j使用图形模型来存储数据,数据的表述方式类似于实际世界中的网络。neo4j具有高效的读和写操作…

    编程 2025-04-25
  • 关键路径的详细阐述

    关键路径是项目管理中非常重要的一个概念,它通常指的是项目中最长的一条路径,它决定了整个项目的完成时间。在这篇文章中,我们将从多个方面对关键路径做详细的阐述。 一、概念 关键路径是指…

    编程 2025-04-25
  • c++ explicit的详细阐述

    一、explicit的作用 在C++中,explicit关键字可以在构造函数声明前加上,防止编译器进行自动类型转换,强制要求调用者必须强制类型转换才能调用该函数,避免了将一个参数类…

    编程 2025-04-25
  • HTMLButton属性及其详细阐述

    一、button属性介绍 button属性是HTML5新增的属性,表示指定文本框拥有可供点击的按钮。该属性包括以下几个取值: 按钮文本 提交 重置 其中,type属性表示按钮类型,…

    编程 2025-04-25

发表回复

登录后才能评论