写写关于持久层,业务层和控制层的自己看法

  • 1:持久层
  • 2:业务层
  • 3:控制层

1:持久层

持久层也叫DAO层,主要工作是负责给数据库做CRUD操作,并把这些数据库操作提供给业务层做处理。如果比作做饭的话,持久层好比是给做饭提供食材。

package com.cy.store.mapper;import com.cy.store.entity.Address;
import org.apache.ibatis.annotations.Param;import java.util.Date;
import java.util.List;/** 处理收货地址数据的持久层接口 */
public interface AddressMapper {/*** 插入收货地址数据* @param address 收货地址数据* @return 受影响的行数*/Integer insert(Address address);/*** 统计某用户的收货地址数据的数量* @param uid 用户的id* @return 该用户的收货地址数据的数量*/Integer countByUid(Integer uid);/*** 查询某用户的收货地址列表数据* @param uid 收货地址归属的用户id* @return 该用户的收货地址列表数据*/List<Address> findByUid(Integer uid);/*** 将某用户的所有收货地址设置为非默认地址* @param uid 收货地址归属的用户id* @return 受影响的行数*/Integer updateNonDefaultByUid(Integer uid);/*** 将指定的收货地址设置为默认地址* @param aid 收货地址id* @param modifiedUser 修改执行人* @param modifiedTime 修改时间* @return 受影响的行数*/Integer updateDefaultByAid(@Param("aid") Integer aid,@Param("modifiedUser") String modifiedUser,@Param("modifiedTime") Date modifiedTime);/*** 根据收货地址aid值,查询收货地址详情* @param aid 收货地址id* @return 匹配的收货地址详情,如果没有匹配的数据,则返回null*/Address findByAid(Integer aid);/*** 根据收货地址id删除数据* @param aid 收货地址id* @return 受影响的行数*/Integer deleteByAid(Integer aid);/*** 查询某用户最后修改的收货地址* @param uid 归属的用户id* @return 该用户最后修改的收货地址,如果该用户没有收货地址数据则返回null*/Address findLastModified(Integer uid);}

2:业务层

业务层也叫Service层,主要工作是负责组装一下持久层的数据操作,把需要的数据封装在实体类中,并提供最终控制层需要的数据。所以如果比作做饭的话,那么业务层好比拿着持久层提供的食材,然后做成一道客官喜爱的菜式。

 @Overridepublic void delete(Integer aid, Integer uid, String username) {// 根据参数aid,调用findByAid()查询收货地址数据Address result = addressMapper.findByAid(aid);// 判断查询结果是否为nullif (result == null) {// 是:抛出AddressNotFoundExceptionthrow new AddressNotFoundException("尝试访问的收货地址数据不存在");}// 判断查询结果中的uid与参数uid是否不一致(使用equals()判断)if (!result.getUid().equals(uid)) {// 是:抛出AccessDeniedException:非法访问throw new AccessDeniedException("非常访问");}// 根据参数aid,调用deleteByAid()执行删除Integer rows1 = addressMapper.deleteByAid(aid);if (rows1 != 1) {throw new DeleteException("删除收货地址数据时出现未知错误,请联系系统管理员");}// 判断查询结果中的isDefault是否为0if (result.getIsDefault() == 0) {return;}// 调用持久层的countByUid()统计目前还有多少收货地址Integer count = addressMapper.countByUid(uid);// 判断目前的收货地址的数量是否为0if (count == 0) {return;}// 调用findLastModified()找出用户最近修改的收货地址数据Address lastModified = addressMapper.findLastModified(uid);// 从以上查询结果中找出aid属性值Integer lastModifiedAid = lastModified.getAid();// 调用持久层的updateDefaultByAid()方法执行设置默认收货地址,并获取返回的受影响的行数Integer rows2 = addressMapper.updateDefaultByAid(lastModifiedAid, username, new Date());// 判断受影响的行数是否不为1if (rows2 != 1) {// 是:抛出UpdateExceptionthrow new UpdateException("更新收货地址数据时出现未知错误,请联系系统管理员");}}

3:控制层

控制层也叫Controller层,主要工作是负责根据传递cookie参数,session参数或者前端传过来的参数,并把这些参数来传递给业务层封装好的数据操作,并把持久层传递过来的数据进行序列化后传递给前端页面。如果比作做饭的话,那么控制层就好比是把做好的菜式传给服务员,让服务员传到客官的菜桌上来享用。

    @RequestMapping("{aid}/delete")public JsonResult<Void> delete(@PathVariable("aid") Integer aid, HttpSession session) {Integer uid = getUidFromSession(session);String username = getUsernameFromSession(session);addressService.delete(aid, uid, username);return new JsonResult<Void>(OK);}

写写关于持久层,业务层和控制层的自己看法相关推荐

  1. 怎么通过controller层退出登录_控制层访问拦截

    在控制层进行访问拦截也是我们在项目中常会遇到的需求,例如:项目中要求系统登录操作有时间限制--12306购票时间的限制等. 对于这类需求我们一般有几种选择: 过滤器Filter AOP SpringM ...

  2. java系统项目分为哪五大层次?控制层_业务_一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转...

    表现层就是看到的东西,比如你现在看到的当前页面 控制层就将你的请求从页面传到后台代码 逻辑层就是处理你的请求的代码 DAO层就是将数据存到数据库中的代码 数据库就是数据库了,存东西用的 ,DAO层就是 ...

  3. 表现层 业务层 持久层 web层 service层 dao层的相关概念描述

    我们的架构一般分为两种, 一种是C/S(客户端/服务器),另一种是B/S(浏览器/服务器). 在我接下来学习的SpringMVC种,几乎都是B/S架构开发的. 其标准的三层架构中,一般分为:表现层,业 ...

  4. java中表示层 控制层 业务逻辑层 数据访问层

    控制层(controller):的职能是负责读取视图表现层的数据,控制用户的输入,并调用业务层的方法: 业务层(service):需要根据系统的实际业务需求进行逻辑代码的编写,有些业务逻辑需要通过与数 ...

  5. view是视图层+action是控制层+service是业务层+dao是数据访问层。

    举例1:MVC 1)最上面的一层,是直接面向最终用户的"视图层"(View).它是提供给用户的操作界面,是程序的外壳. 2)最底下的一层,是核心的"数据层"(M ...

  6. java中的控制层(controller)数据访问层(dao)业务逻辑层的(service)

    控制层(controller)的职能是负责读取视图表现层的数据,控制用户的输入,并调用业务层的方法: 业务层(service)需要根据系统的实际业务需求进行逻辑代码的编写,有些业务逻辑需要通过与数据库 ...

  7. java 业务层业务接口层_Java web五层架构

    DAO层: 1.DAO层--[面向表]: 持久层.数据访问层,主要与数据库进行交互 介绍: DAO层只是封装增删改查,比较底层,比较基础的操作,具体到对于某个表.某个实体的增删改查.至于增删查改如何去 ...

  8. 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构...

    表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的DAO层就是将访问数据库 ...

  9. 设计进步,记一笔,控制层的代码,他不光控制还要校验数据!以前理解错啦

    再记录: 因为使用泛型对公共代码大量抽取,用到了继承关系,则需将原来的在业务层的部分数据放到controller层校验 使他符合mvc的请求过程,即是一个完整处理的先后顺序问题 ,对业务处理的时就必须 ...

最新文章

  1. ROS之自定义msg
  2. HBase 常用Shell命令
  3. 【Flutter】Flutter 混合开发 ( 简介 | Flutter 混合开发集成步骤 | 创建 Flutter Module )
  4. 关于热插拔usb hotplug /proc/sys/kernel mdev udev busybox
  5. ORACLE 外部表的简单使用
  6. 过拟合与模型调优(part1)--过拟合,模型调优,数据分割
  7. 华为python有必要学吗_【华为云技术分享】这个 Python 库有必要好好学学
  8. 国行ps4服务器维护,不能登录其地区的PSN代表什么
  9. macOS的Fn键实用技巧分享
  10. 测试抑郁症软件,‎App Store 上的“抑郁症测试 - 心理测试”
  11. 8、网友问答之串口数据接收与数据强制转换---------labview宝典
  12. 基于STM32的超声波避障小车
  13. c语言编程软件支持win8,C语言编程软件vc6.0(支持win7 / win8 / 10)官方免费版6.0
  14. phpspider 简单使用
  15. HTTP状态码的含义
  16. CentOS 6.8安装Docker V1.0
  17. 智能手机和PC降温,英伟达英特尔等把钱砸向了AI
  18. localhost无法访问本机
  19. linux的tar命令之-N参数详解
  20. [易语言] 百宝云+迅雷引擎:满速、直链下载文件!

热门文章

  1. Thinking in Shader(1)
  2. net12. 客户类——TcpClient
  3. 关于对C语言中数组名取地址加减等操作的一点探究
  4. 第2章第2节:文本排版技巧:正确使用中英文标点 [PowerPoint精美幻灯片实战教程]
  5. sql修改表的字段类型
  6. liunx 清理磁盘垃圾文件
  7. 【工作总结】银行软件测试工作总结
  8. 关于广东省高考移民, 求助数据高手伸出援手
  9. 批量转换word(docx)为pdf文件
  10. 几个安全概论的超简单认识