SpringBoot整合SSM-junit测试

前提 :创建一个新的springboot模块

创建一个员工案例(搭建)

  1. 创建员工实体类
  2. 创建员工的控制层
  3. 创建员工的服务层(接口–实现类)
  4. 创建员工的数据层(接口–实现类)

以上的4种文件 是使用SSM必备的文件

创建员工实体类

  • 属性
  • get|set方法

理论上说 实体类是需要和数据库中的表格的列名一对一对应 在此处是任意命名属性 没有连接数据库

image-20230912103537979

实体类代码:

package top.yxqz.number2.entity;/*** @author: 余小小* @date: 2023/9/12* @description:员工实体类* 推荐安装插件 PTG 插件:快速生成JavaBean需要的东西、快速生成SQL语句* 快速生成JavaBean需要的东西 快捷键:ctrl+shift+逗号*/
public class Employee {//    用户名private String userName;//    年龄private Integer age;//    密码private String password;public Employee() {}public Employee(String userName, Integer age, String password) {this.userName = userName;this.age = age;this.password = password;}/*** 获取* @return userName*/public String getUserName() {return userName;}/*** 设置* @param userName*/public void setUserName(String userName) {this.userName = userName;}/*** 获取* @return age*/public Integer getAge() {return age;}/*** 设置* @param age*/public void setAge(Integer age) {this.age = age;}/*** 获取* @return password*/public String getPassword() {return password;}/*** 设置* @param password*/public void setPassword(String password) {this.password = password;}public String toString() {return "Employee{userName = " + userName + ", age = " + age + ", password = " + password + "}";}
}

控制层

/*** @author: 余小小* @date: 2023/9/12* @description:员工控制层 控制层推荐使用@Controller注解 但是我们只想要返回数据* 推荐使用@RestController注解*/
@RestController
public class EmployeeController {
}

服务层

package top.yxqz.number2.service;/*** @author: 余小小* @date: 2023/9/12* @description: 为啥要创建服务层的接口 而不是直接创建服务层的实现类??* 在IOC中 获取Bean对象有多种方式  官方推荐使用接口类型来获取Bean对象(面向接口编程)* Bean对象实际上是接口类型的引用 指向的该接口的实现类(多态的性质)*/
public interface EmployeeService {
}

创建服务层的实现类

在这里插入图片描述

package top.yxqz.number2.service.imp;import org.springframework.stereotype.Service;
import top.yxqz.number2.service.EmployeeService;/*** @author: 余小小* @date: 2023/9/12* @description: 在服务层(业务层)推荐使用Service注解*/
@Service
public class EmployeeServiceImp implements EmployeeService {
}

持久层

package top.yxqz.number2.dao;/*** @author: 余小小* @date: 2023/9/12* @description:*/
public interface EmployeeDao {
}

持久层实现类

package top.yxqz.number2.dao.imp;import org.springframework.stereotype.Repository;
import top.yxqz.number2.dao.EmployeeDao;/*** @author: 余小小* @date: 2023/9/12* @description:为了让Spring知道该类是持久层的bean 需要添加注解  (将该类交给IOC容器管理)* 这种思想————组件化思想* 在持久层 推荐使用@Repository注解*/
@Repository
public class EmployeeDaoImp implements EmployeeDao {
}

获取员工信息(需求)

  1. 信息 理论来源于数据库,在此处未连接数据库 ,在持久层中模拟数据库获取数据——————持久层|数据层
  2. 需要将该信息的接口暴露给前端(写接口)——————控制层
  3. 实现接口(在业务层中实现接口)——————————服务层

推荐写功能的顺序:控制层----服务层—持久层

控制层代码

package top.yxqz.number2.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import top.yxqz.number2.entity.Employee;
import top.yxqz.number2.service.EmployeeService;/*** @author: 余小小* @date: 2023/9/12* @description:员工控制层 控制层推荐使用@Controller注解 但是我们只想要返回数据* 推荐使用@RestController注解*/
@RestController
public class EmployeeController {@Autowiredprivate EmployeeService employeeService;/*** 需求:获取员工的信息* 1.返回员工信息对象* 2.调用员工服务层实现*/@GetMapping("/emp")public Employee getEmpObj() {return employeeService.getEmpObj();}
}

服务层(实现类)

package top.yxqz.number2.service.imp;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import top.yxqz.number2.dao.EmployeeDao;
import top.yxqz.number2.entity.Employee;
import top.yxqz.number2.service.EmployeeService;/*** @author: 余小小* @date: 2023/9/12* @description: 在服务层(业务层)推荐使用Service注解*/
@Service
public class EmployeeServiceImp implements EmployeeService {@Autowiredprivate EmployeeDao employeeDao;/*** 实现 获取员工信息的方法* 1.调用持久层|数据层 来实现** @return*/@Overridepublic Employee getEmpObj() {return employeeDao.getEmpObj();}
}

持久层(实现类)

package top.yxqz.number2.dao.imp;import org.springframework.stereotype.Repository;
import top.yxqz.number2.dao.EmployeeDao;
import top.yxqz.number2.entity.Employee;/*** @author: 余小小* @date: 2023/9/12* @description:为了让Spring知道该类是持久层的bean 需要添加注解  (将该类交给IOC容器管理)* 这种思想————组件化思想* 在持久层 推荐使用@Repository注解*/
@Repository
public class EmployeeDaoImp implements EmployeeDao {/*** 制造数据(模拟从数据库获取数据)** @return*/@Overridepublic Employee getEmpObj() {Employee employee = new Employee("鱼香茄子",22,"123456");return employee;}
}

获取员工信息(测试)

  1. 创建测试类
  2. 执行单元测试

image-20230912113007388

测试类代码

package top.yxqz.number2;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import top.yxqz.number2.controller.EmployeeController;
import top.yxqz.number2.entity.Employee;/*** @author: 余小小* @date: 2023/9/12* @description:测试员工相关的接口功能 1.注入员工控制层* 2.调用相关方法 查看预期结果* 使用springboot的测试(不在讲解SSM中的测试方法)* 1.使用@SpringBootTest注解* 该注解的目的(功能):*/
@SpringBootTest
public class TestEmployee {//    注入员工控制层@Autowiredprivate EmployeeController employeeController;/*** @Test 是junit单元测试工具类的* 该方法 在类中要满足 java方法的规则(标识符)* 该方法 返回值 必须是void* 方法名字建议 和要测试的接口方法一致(规范)*/@Testpublic void getEmpObj() {
//    调用相关方法 查看预期结果Employee employee = employeeController.getEmpObj();System.out.println(employee);}}

获取员工信息(启动)

  • 工程|模块的启动
    在这里插入图片描述

访问接口:去控制层定义的路由地址 进行访问

当前功能的访问地址:localhost:8080/emp

在这里插入图片描述

访问结果

image-20230912113341253

推荐安装插件PTG 插件

在这里插入图片描述

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

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

相关文章

0基础学习VR全景平台篇 第97篇:VR步进式漫游

蛙色VR步进式漫游正式上线! 为全行业室内场景提供三维空间重建能力,基于真实场景复刻,多维展示打破线下时空限制,提供高性价比的VR空间应用解决方案。 一、什么是步进式漫游? VR步进式漫游,基于AI特征点提…

修复中间件log4j漏洞方案(直接更换漏洞jar包)

说明: 后台服务里面的log4j漏洞我们已经全部升级处理了,但是一些中间件镜像包里的log4j漏洞需要单独处理 解决办法以ElasticSearch7.6.2为例: 方法: (1)找到容器里面有哪些旧的log4j依赖包 (…

Window安装Node.js npm appium Appium Desktop

Window安装Node.js npm appium appium Desktop 1.安装nodejs 参考链接: https://blog.csdn.net/weixin_42064877/article/details/131610918 1)打开浏览器,并前往 Node.js 官网 https://nodejs.org/ ↗。 2)在首页中,您可以看到当前 Node.…

第17章_瑞萨MCU零基础入门系列教程之CAN FD 模块

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…

双碳目标下基于“遥感+”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟实践

卫星遥感具有客观、连续、稳定、大范围、重复观测的优点,已成为监测全球碳盘查不可或缺的技术手段,卫星遥感也正在成为新一代 、国际认可的全球碳核查方法。目的就是梳理碳中和与碳达峰对卫星遥感的现实需求,系统总结遥感技术在生态系统碳储量…

pdf文件过大如何缩小上传?pdf压缩跟我学

在我们日常工作和生活中,经常会遇到PDF文件过大的问题,给文件传输和存储带来了很大的不便。那么,如何缩小PDF文件大小以便上传呢?下面就给大家分享几个压缩方法,一起来了解下PDF文件压缩方法吧~ 方法一:嗨格…

docker系列(5) - docker仓库

文章目录 5 docker仓库5.1 创建命名空间5.2 创建镜像仓库5.3 设置访问凭证5.3 镜像仓库命令信息5.4 登录阿里云上传镜像5.5 拉取镜像运行5.6 私有仓库(docker Registry)5.6.1 安装docker registry5.6.2 准备镜像5.6.2 本地私服仓库5.6.3 推送到私服仓库5.6.4 拉取私服镜像 5 do…

C/C++输出第二个整数 2019年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 2019年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 输入三个整数,把第二个输入的整数输出。 2、输入输出 输…

如何在三星手机上截屏?每一款三星手机的每一种方法,包括S23

无论你是将截图作为保存图片、消息或信息的快速方式,还是作为演示像这篇文章这样有用的操作方法的方式,能够截图都会非常有用。 但并不是所有的手机都以相同的方式进行屏幕截图。事实上,并不是所有的三星手机都能做到这一点。例如&#xff0…

一文了解国自然热点“超级增强子”的重要标记——H3K27ac

2023国自然结果已经揭晓,“超级增强子”( Super enhancer, SE)作为国自然新热点,2023年项目为32个。2019-2023年来总累计项目143项,但累计项目金额达6033万。此外,Pubmed数据统计显示5年间SE影响因子大于10…

企业架构LNMP学习笔记27

Keepalived的配置补充: 脑裂(裂脑):vip出现在了多台机器上。网络不通畅,禁用了数据包,主备服务器没法通讯,造成备服务器认为主服务器不可用,绑定VIP,主服务器VIP不会释放…

laravel系列(二) Dcat admin框架开发工具使用

开发工具可以非常好的帮助我们去快速的开发CURD等操作,但也是有部分框架有些不是太便捷操作,这篇博客主要为大家介绍Dcat admin的开发工具详细使用. 如何创建页面: 在联表我们首先要去.env文件中去找连接数据库方法: APP_NAMELaravel APP_ENVlocal APP_KEYbase64:thO0lOVlzj0…

VR数字工厂,为企业工厂打造竞争新优势

工业经济中大部分行业都是制造业,为了合力助推工业经济提质增效,谋划推进制造业数字化转型就显得尤为重要了。用VR赋能工厂数字升级,打造VR数字工厂,满足各行各业沉浸式营销展示需求。 VR数字工厂是一种全新的工业模式&#xff0c…

【数据结构-队列】双端队列

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

【前端开发】JS Vue React中的通用递归函数

文章目录 前言一、递归函数的由来二、功能实现1.后台数据2.处理数据3.整体代码 总结 前言 大家好,今天和大家分享一下在前端开发中js,vue,react的通用递归方法。 递归是指一个函数在执行过程中调用自身的行为。通过递归,可以将一…

特殊矩阵的压缩存储(对称矩阵,三角矩阵和三对角矩阵)

目录 1.对阵矩阵 2.三角矩阵 3.三对角矩阵(带状矩阵) 均假设数组的下标从0开始 1.对阵矩阵 定义:若对一个n阶矩阵A中的任意一个元素 aᵢ,ⱼ 都有aᵢ,ⱼaⱼ,ᵢ (1≤i,j≤n),则称其为对称矩阵。 存储策略…

【canal系】canal集群异常Could not find first log file name in binary log index file

这里先说明下这边使用的canal版本号为1.1.5 在描述这个问题之前,首先需要简单对于canal架构有个基本的了解 canal工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQL master 收到 dum…

Element--生成不定列的表格

1、对于一些场景,前端可能需要展示不定列数的数据;譬如考勤,可能有的人是一天一次上下班打卡,有的人是一天两次上下班打卡。这个时候统计就需要更具人员做不同的展示,不能固定在前端写死列的属性。 2、代码示例 &…

Vue + Element UI 前端篇(五):国际化实现

Vue Element UI 实现权限管理系统 前端篇(五):国际化实现 国际化支持 1.安装依赖 执行以下命令,安装 i18n 依赖。 yarn add vue-i18n $ yarn add vue-i18n yarn add v1.9.4 warning package-lock.json found. Your project …

重磅:百度李彦宏、中科院曾毅入选,《时代周刊》AI最有影响力100人!

2023年9月8日,《时代周刊》发布了“2023年AI领域最有影响力100人” 榜单。 榜单权威吗? 有必要介绍下《时代周刊》。 《Time》(时代周刊),1923年创刊于纽约,是美国公认的最重要的新闻杂志之一。《时代周刊》以报道精彩…