services层和controller层

services层

我的理解,services层是编写逻辑代码语句最多的一个层,非常重要,在实际的项目中,负责调用Dao层中的mybatis,在我的项目中它调用的是这两个文件

在这里插入图片描述
举例代码如下

package com.example.sfdeliverysystem.service;
import com.example.sfdeliverysystem.dao.mybatis.StashMapper;
import com.example.sfdeliverysystem.model.StashPO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;@Service//加载service方法的包
@Slf4j//加载log方法的包
public class StashService {//创建一个方法private StashMapper stashMapper;//调用接口并创建StashMapper类型的对象,这个类是Dao层的接口里的/*** 新增Stash* @param stashPo*/public int insertStash(StashPO stashPo) {   //调用接口中的insertStash方法,//这个是方法名,方法体在StashMapper.xml里边定义了try{//实际写项目的时候每个方法体里边都应该写try和//TODO 后续应该在mybatis中加上返回值,确定是否插入成功(1成功,0失败)stashMapper.insertStash(stashPo);//用stashMapper.来调用它体内的方法return 1;}catch (NullPointerException e){//如果出错,终止try的运行,进入catch分支运行方法体log.error("有部分属性为空,{0}",e);return 0;}};/*** 查询Stash,返回我查询的值,成功返回查询的值,失败就不用返回了* @return selectStash()*/public  StashPO selectStash() {//定义返回值类型为StashPO,调用接口中的selectStash方法StashPO stashpo = new StashPO();//新建局部变量,为了承接selectStash方法的返回值(结果)try {stashpo = stashMapper.selectStash();//承接selectStash方法的返回值(结果)}catch (Exception e) {log.error("有部分属性查询不到,{0}", e); //有部分属性查询不到nullException}return stashpo;};/*** 更新Stash,成功返回1,失败返回0* @param stashPo* @return*/public int updateStash(StashPO stashPo){try{stashMapper.updateStash(stashPo);return 1;}catch (Exception e) {log.error("有部分属性无法更新,{0}", e);return 0;}};/*** 删除Stash,成功返回1,失败返回0* @param cid* @return*/public int deleteStash(String cid) {try{stashMapper.deleteStash(cid);return 1;}catch (Exception e) {log.error("有部分属性无法删除,{0}", e);return 0;}};
}

controller层

我的理解,controller层,是用来处理页面和services层的逻辑关系的一个层,下面由代码举例:

package com.example.sfdeliverysystem.controller;
import com.example.sfdeliverysystem.dao.mybatis.StashMapper;
import com.example.sfdeliverysystem.model.StashPO;
import com.example.sfdeliverysystem.service.StashService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RequestMapping("/StashPO")//将请求和处理请求的控制器方法关联起来,建立映射关系,里边写实体类名
@RestController
//定义一个StashController类,里边写对应的增删改查的方法,方法体为调用services层中的方法
public class StashController {private StashService stashService;//新建两个局部变量,还是主要为了调用和承接返回值private int i;
@GetMapping("/{insert}")//绿色的是在url中为了让其可以被识别的路径关键字,自己设置的
public int insertStash(StashPO stashPo){//依旧是调用接口中的方法然后承接其返回值,然后输出本身方法体的返回值i = stashService.insertStash(stashPo);return i;};@GetMapping("/{select}")public  StashPO selectStash() {StashPO stashpo = new StashPO();try{stashpo = stashService.selectStash();}catch (Exception e) {log.error("有部分属性查询不到,{0}", e);}return stashpo;};@GetMapping("/{update}")public int updateStash(StashPO stashPo){i = stashService.updateStash(stashPo);return i;}@GetMapping("/{delete}")public int deleteStash(String cid) {i = stashService.deleteStash(cid);return i;};
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/338811.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的 wifi 家电开关控制系统设计

摘要 : 本文是利用 51 单片机基础知识结合 wifi 通信技术完成的一套可通过手机无线遥控家电开关系统设计。整个系统以 STC89C51 单片机为核心,采用业界主流的 ESP8266wifi 模块作为通信模块,家电开关的自动控制部分采用 3 路继电器开关来实现。本系统的…

【python】多线程(3)queue队列之不同延时时长的参数调用问题

链接1:【python】多线程(笔记)(1) 链接2:【python】多线程(笔记)(2)Queue队列 0.问题描述 两个线程,但是不同延时时长,导致数据输出…

MyBatis框架-开发方式+参数传递+#{}、${}+返回值处理+查询结果封装为对象+resultType

一、开发方式 MyBatis-Dao层Mapper接口化开发 二、注意事项 1、Mapper接口与Mapper.xml映射文件要满足4个对应 (1)Mapper接口的全类名必须与Mapper映射文件中的namespace相同 (2)Mapper接口中的每一个方法名在Mapper映射文件…

961题库 北航计算机 操作系统 附答案 选择题形式

有题目和答案,没有解析,不懂的题问大模型即可,无偿分享。 第1组 习题 计算机系统的组成包括( ) A、程序和数据 B、处理器和内存 C、计算机硬件和计算机软件 D、处理器、存储器和外围设备 财务软件是一种&#xff…

iOS——类与对象底层探索

类和对象的本质 当我们使用OC创建一个testClass类并在main函数创建它的实例对象的时候,OC的底层到底是什么样的呢? 首先,我们要了解OC对象的底层结构,那么我们就得知道:OC本质底层实现转化其实都是C/C代码。 使用下面…

11Linux学习笔记

Linux 实操篇 目录 文章目录 Linux 实操篇1.rtm包(软件)1.1 基本命令1.2 基本格式1.3安装rtm包1.4卸载rtm包 2.apt包2.1 基本命令结构2.2 常用选项2.3常用命令 1.rtm包(软件) 1.1 基本命令 1.2 基本格式 1.3安装rtm包 1.4卸载r…

④单细胞学习-cellchat细胞间通讯

目录 1,原理基础 流程 受体配体概念 方法比较 计算原理 2,数据 3,代码运行 1,原理基础 原文学习Inference and analysis of cell-cell communication using CellChat - PMC (nih.gov) GitHub - sqjin/CellChat: R toolk…

字符串操作java

题目: 描述 给定长度为n的只有小写字母的字符串s,进行m次操作,每次将[l,r]范围内所有c1字符改成c2,输出操作完的字符串 输入描述: 第一行两个数n,m 第二行一个字符串s 之后m行,每行两个数l 、r两个字符…

[DDR5 Jedec 4-1] 预充电命令 Precharge

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 1. 预充电(Precharge)含义 由于SDRAM的寻址具体独占性,因此在进行完读写操作后,若需对同一L-Bank的另一行进行寻址,则必须先关闭原…

针对大模型的上下文注入攻击

大型语言模型(LLMs)的开发和部署取得了显著进展。例如ChatGPT和Llama-2这样的LLMs,利用庞大的数据集和Transformer架构,能够产生连贯性、上下文准确性甚至具有创造性的文本。LLMs最初和本质上是为静态场景设计的,即输入…

idea+tomcat+mysql 从零开始部署Javaweb项目(保姆级别)

文章目录 新建一个项目添加web支持配置tomcat优化tomcat的部署运行tomcatidea数据库连接java连接数据库 新建一个项目 new project;Java;选择jdk的版本;next;next;填写项目名字,选择保存的路径;…

C++进阶之AVL树+模拟实现

目录 目录 一、AVL树的基本概念 1.1 基本概念 二、AVL树的模拟实现 2.1 AVL树节点的定义 2.2 插入操作 2.3 旋转操作 2.4 具体实现 一、AVL树的基本概念 1.1 基本概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树&…

微信里的东西怎么打印出来呢

随着微信的普及,我们的日常生活和工作都离不开这个强大的社交工具。无论是重要的工作文件、孩子的作业、还是精彩的旅行照片,我们都习惯在微信里保存和分享。但是,当需要将这些微信里的内容打印出来时,很多人可能会感到困惑和麻烦…

【C++】vector的模拟实现

💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读 1. vector的核心框架接口 2. 构造函数 2.1 基本构造 2.2 拷贝构造(传统写法) 2.3 析构函数 2…

验证外星语词典

在解决算法题时,哈希表是经常被使用的工具,可以用来记录字符串中字母出现的次数,字符串中字符出现的位置等,这里用到的就是利用哈希表储存字符串中字符出现的的位置。 “外星语”的字母表顺序是不一样的,所以…

SIMBA:单细胞嵌入与特征

目前大多数单细胞分析管道仅限于细胞嵌入,并且严重依赖于聚类,而缺乏显式建模不同特征类型之间相互作用的能力。此外,这些方法适合于特定的任务,因为不同的单细胞问题的表述方式不同。为了解决这些缺点,SIMBA作为一种图…

43.自定义线程池(一)

ThreadPool是线程池,里面是一定数量的线程,是消费者。 BlockingQueue阻塞队列,线程池中的线程会从阻塞队列中去拿任务执行。任务多了线程池处理不过来了,就会到Blocking Queue中排队,等待执行。链表结构,特…

使用python实现超市购物系统(一个小例子)

可以增加其他功能,这里就展示一个小的例子~

Crosslink-NX器件应用连载(11): 图像(数据)远程传输

作者:Hello,Panda 大家下午好,晚上好。这里分享一个Lattice Crosslink-NX器件实现图像或数据(卫星数据、雷达数据、ToF传感器数据等)远程传输的案例(因为所描述的内容颇杂,晒图不好晒&#xff…

【刷题】初探递归算法 —— 消除恐惧

送给大家一句话: 有两种东西, 我对它们的思考越是深沉和持久, 它们在我心灵中唤起的惊奇和敬畏就会日新月异, 不断增长, 这就是我头上的星空和心中的道德定律。 -- 康德 《实践理性批判》 初探递归算法 1 递归算…