前提 :创建一个新的springboot模块
创建一个员工案例(搭建)
- 创建员工实体类
- 创建员工的控制层
- 创建员工的服务层(接口–实现类)
- 创建员工的数据层(接口–实现类)
以上的4种文件 是使用SSM必备的文件
创建员工实体类
- 属性
- get|set方法
理论上说 实体类是需要和数据库中的表格的列名一对一对应 在此处是任意命名属性 没有连接数据库
实体类代码:
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 {
}
获取员工信息(需求)
- 信息 理论来源于数据库,在此处未连接数据库 ,在持久层中模拟数据库获取数据——————持久层|数据层
- 需要将该信息的接口暴露给前端(写接口)——————控制层
- 实现接口(在业务层中实现接口)——————————服务层
推荐写功能的顺序:控制层----服务层—持久层
控制层代码
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;}
}
获取员工信息(测试)
- 创建测试类
- 执行单元测试
测试类代码
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
访问结果