(一)、实现分布
1. Controller层
职责: 负责处理HTTP请求和响应,作为前端与后端服务交互的接口。
实现: 通过@RestController或@Controller注解定义控制器类,并使用如@GetMapping, @PostMapping等注解来映射HTTP请求。
2. Service层
职责: 实现业务逻辑的核心处理,包括数据的处理、验证、计算等。
实现: 通常通过@Service注解来定义服务类,并且这些服务类会被注入到Controller中以供调用。
3. Mapper层 (MyBatis中的DAO层)
职责: 负责数据库操作,即数据的增删改查。
实现: 使用MyBatis的@Mapper注解定义接口,并在接口中声明SQL语句的方法。这些方法会被框架自动代理实现,完成与数据库的交互。
4. POJO层 (Plain Old Java Object, 简单老式Java对象)
职责: 存储数据模型,用于表示应用程序中的实体对象。
实现: 定义Java类来表示数据库表中的记录,通常包括属性和简单的getter/setter方法。
这种分层设计有助于实现高内聚低耦合的设计原则,使得各个组件可以独立开发和测试,同时也方便了后期维护和扩展。
(二)、实现数据
1. 创建演示数据
本次演示用到mysql8数据库进行操作
createdatabaseifnotexists mybatis;use mybatis;createtableuser(
id intunsignedprimarykeyauto_incrementcomment'ID',
name varchar(100)comment'姓名',
age tinyintunsignedcomment'年龄',
gender tinyintunsignedcomment'性别, 1:男, 2:女',
phone varchar(11)comment'手机号')comment'用户表';insertintouser(id, name, age, gender, phone)VALUES(null,'白眉鹰王',55,'1','18800000000');insertintouser(id, name, age, gender, phone)VALUES(null,'金毛狮王',45,'1','18800000001');insertintouser(id, name, age, gender, phone)VALUES(null,'青翼蝠王',38,'1','18800000002');insertintouser(id, name, age, gender, phone)VALUES(null,'紫衫龙王',42,'2','18800000003');insertintouser(id, name, age, gender, phone)VALUES(null,'光明左使',37,'1','18800000004');insertintouser(id, name, age, gender, phone)VALUES(null,'光明右使',48,'1','18800000005');
(三)、代码实现
1.代码结构(tree /f)
pom.xml
│
├─src
│ └─main
│ ├─java
│ │ └─com
│ │ └─itheima
│ │ └─springbootmybatis
│ │ │ SpringbootMybatisApplication.java
│ │ │
│ │ ├─controller
│ │ │ UserController.java
│ │ │
│ │ ├─mapper
│ │ │ UserMapper.java
│ │ │
│ │ ├─pojo
│ │ │ User.java
│ │ │
│ │ └─service
│ │ │ UserService.java
│ │ │
│ │ └─impl
│ │ UserServiceImpl.java
│ │
│ └─resources
│ │ application.yml
│ │
│ ├─static
│ └─templates
2. application.yml 实现
数据库配置:启动类、数据库、用户名、密码
开启端口配置:默认为8080
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis
username: root
password:123456server:port:8082
3. pom.xml依赖增加
parent 是集成了父工程
mysql驱动依赖、mybatis的起步依赖、springboot启动web、 lombok 注解
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.3</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.itheima</groupId><artifactId>springboot-mybatis</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-mybatis</name><description>springboot-mybatis</description><properties><java.version>17</java.version></properties><dependencies><!--mysql驱动依赖--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!--mybatis的起步依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>3.1.3</version></plugin></plugins></build></project>
4. controller 层
userService 自动注入了实现类,通过实现类来进行操作。
- Java函数名为findById,它是一个HTTP请求映射方法,通过传入的ID参数查询并返回对应的用户信息。具体用户数据由userService对象的findById方法负责查找。
- Java函数名为findAll,它是一个控制器方法,通过@RequestMapping注解指定访问路径为"/findAll"。函数功能是从用户服务(userService)中获取所有用户数据,并返回一个用户列表(List)。简而言之,此方法用于查询并返回所有用户信息。
- Java函数名为AddUser,它是一个控制器方法,通过HTTP请求映射添加用户。功能为:接收一个User类型的参数user。调用userService.AddUser(user)添加用户。返回添加操作的结果信息。
- Java函数名应为DeleteById,位于一个处理HTTP请求的类中,通过GET或POST等方法接收一个名为id的整数参数。该函数调用.userService的DeleteById方法执行删除操作,并将返回值原样返回。主要功能是根据提供的ID删除用户数据。
- Java函数的功能是更新用户信息。 注解@RequestMapping(“/UpdateUser”)用于映射URL路径为"/UpdateUser"的客户端请求。 函数UpdateUser(User user)接收一个类型为User的参数user,这个参数代表需要更新的用户信息。 在函数体中,它调用userService.UpdateUser(user)方法来执行实际的用户信息更新操作。 userService是一个User服务类的实例,通过依赖注入的方式引入到当前类中。 函数返回类型为String,通常用于指定转发或重定向的视图名称,或者告知调用者操作的结果。
packagecom.itheima.springbootmybatis.controller;importcom.itheima.springbootmybatis.pojo.User;importcom.itheima.springbootmybatis.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjava.util.List;@RestControllerpublicclassUserController{@AutowiredprivateUserService userService;@RequestMapping("/findById")publicUserfindById(Integer id){return userService.findById(id);}@RequestMapping("/findAll")publicList<User>findAll(){return userService.findAll();}@RequestMapping("/AddUser")publicStringAddUser(User user){returnuserService.AddUser(user);}@RequestMapping("/DelteById")publicStringDelteById(Integer id){returnuserService.DelteById(id);}@RequestMapping("/UpdateUser")publicStringUpdateUser(User user){returnuserService.UpdateUser(user);}}
5. Service层
接口:UserService.java
- findById(Integer id):根据用户ID查找并返回一个特定的用户对象。
- findAll():查找并返回所有用户对象的列表。
- DeleteById(Integer id):根据用户ID删除一个特定的用户,并返回操作结果的消息。
- AddUser(User user):添加一个新的用户对象,并返回操作结果的消息。
- UpdateUser(User user):更新一个已存在的用户对象的信息,并返回操作结果的消息。
packagecom.itheima.springbootmybatis.service;importcom.itheima.springbootmybatis.pojo.User;importjava.util.List;publicinterfaceUserService{UserfindById(Integer id);List<User>findAll();StringDelteById(Integer id);StringAddUser(User user);StringUpdateUser(User user);}
实现类:UserServiceImpl.java
- findById(Integer id):根据用户ID查询单个用户信息。
- findAll():查询所有用户信息并返回用户列表。
- DelteById(Integer id):根据用户ID删除用户信息,成功后返回"删除成功"的消息。
- AddUser(User user):向数据库中添加新的用户信息,成功后返回"添加成功"的消息。
- UpdateUser(User user):更新用户信息,成功后返回"更新成功"的消息。
packagecom.itheima.springbootmybatis.service.impl;importcom.itheima.springbootmybatis.mapper.UserMapper;importcom.itheima.springbootmybatis.pojo.User;importcom.itheima.springbootmybatis.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.util.List;@ServicepublicclassUserServiceImplimplementsUserService{@AutowiredprivateUserMapper userMapper;@OverridepublicUserfindById(Integer id){return userMapper.findById(id);}@OverridepublicList<User>findAll(){return userMapper.findAll();}@OverridepublicStringDelteById(Integer id){userMapper.DelteById(id);return"删除成功";}@OverridepublicStringAddUser(User user){userMapper.AddUser(user);return"添加成功";}@OverridepublicStringUpdateUser(User user){userMapper.UpdateUser(user);return"更新成功";}}
6. Mapper层
- findById:通过用户ID查询单个用户的信息。SQL语句为select * from user where id = #{id}。
- findAll:查询所有用户的信息。SQL语句为select * from user。
- DeleteById:通过用户ID删除用户信息。SQL语句为delete from user where id = #{id}。
- AddUser:向用户表中插入一条新的用户记录。SQL语句为insert into user(name,age,gender,phone) values(#{name},#{age},#{gender},#{phone})。
- UpdateUser:更新用户表中指定ID的用户信息。SQL语句为update user set name = #{name},age = #{age},gender = #{gender},phone = #{phone} where id = #{id}。
packagecom.itheima.springbootmybatis.mapper;importcom.itheima.springbootmybatis.pojo.User;importorg.apache.ibatis.annotations.*;importjava.util.List;@MapperpublicinterfaceUserMapper{@Select("select * from user where id = #{id}")UserfindById(Integer id);@Select("select * from user")List<User>findAll();@Delete("delete from user where id = #{id}")voidDelteById(Integer id);@Insert("insert into user(name,age,gender,phone) values(#{name},#{age},#{gender},#{phone})")voidAddUser(User user);@Update("update user set name = #{name},age = #{age},gender = #{gender},phone = #{phone} where id = #{id}")voidUpdateUser(User user);}
7. pojo层
- 包名和导入: package com.itheima.springbootmybatis.pojo;: 定义了类所在的包路径。 import lombok.AllArgsConstructor;, import lombok.Data;, import lombok.NoArgsConstructor;: 导入Lombok库的注解,以简化类的代码。
- Lombok注解: @Data: 自动生成getter和setter方法、toString方法、equalsAndHashCode方法,以及链式调用支持。 @NoArgsConstructor: 自动生成一个无参构造方法。 @AllArgsConstructor: 自动生成一个包含所有字段的构造方法。
- 类定义: public class User: 定义了一个公共类User。
- 字段: private Integer id;: 用户ID,使用Integer类型。 private String name;: 用户姓名,使用String类型。 private Short age;: 用户年龄,使用Short类型。 private Short gender;: 用户性别,使用Short类型,通常0表示女,1表示男。 private String phone;: 用户电话号码,使用String类型。
packagecom.itheima.springbootmybatis.pojo;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;/**
* @Data 包括了@Getter @Setter @ToString @RequiredArgsConstructor @EqualsAndHashCode @ToString @Accessors(chain = true)
*/@Data@NoArgsConstructor//无参构造@AllArgsConstructor//有参构造publicclassUser{privateInteger id;privateString name;privateShort age;privateShort gender;privateString phone;}
(四)、测试用例
postman ,可以用import进行导入测试。
四种基础操作接口测试.postman_collection.json
- 基本信息: _postman_id: 该集合的唯一标识符。 name: 集合名称,这里是“四种基础操作接口测试”。 schema: 集合遵循的模式版本。 _exporter_id: 导出者的唯一标识符。
- 请求列表: 查找所有用户: 方法: GET URL: localhost:8082/findAll 说明: 通过GET请求获取服务器上所有用户的列表。 添加操作: 方法: GET URL: localhost:8082/AddUser 查询参数: name: 用户名 age: 年龄 gender: 性别 phone: 电话号码 说明: 通过GET请求向服务器添加一个新的用户记录。 删除用户操作: 方法: GET URL: localhost:8082/DelteById 查询参数: id: 要删除用户的ID 说明: 通过GET请求删除指定ID的用户记录。 更新用户: 方法: GET URL: localhost:8082/UpdateUser 查询参数: id: 要更新用户的ID name: 更新后的用户名 age: 更新后的年龄 phone: 更新后的电话号码 gender: 更新后的性别 说明: 通过GET请求更新指定ID的用户记录。
- 其他细节: 端口: 所有请求都指向localhost:8082。 响应: 每个请求后面都有一个空的response数组,这意味着这些请求还没有被实际发送或记录响应。
- 这是一个包含了四个API测试用例的Postman集合文件,分别对应于CRUD(创建、读取、更新、删除)操作中的“读取所有记录”、“创建新记录”、“删除记录”和“更新记录”。这些测试用例通过GET请求与服务器交互,用于验证后端服务的功能是否正常。
{"info":{"_postman_id":"016041ef-488e-4101-ba7e-1aa2f4b7415a","name":"四种基础操作接口测试","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json","_exporter_id":"14213812"},"item":[{"name":"查找所有用户","request":{"method":"GET","header":[],"url":{"raw":"localhost:8082/findAll","host":["localhost"],"port":"8082","path":["findAll"]}},"response":[]},{"name":"添加操作","request":{"method":"GET","header":[],"url":{"raw":"localhost:8082/AddUser?name=sky&age=18&gender=1&phone=88888888","host":["localhost"],"port":"8082","path":["AddUser"],"query":[{"key":"name","value":"sky"},{"key":"age","value":"18"},{"key":"gender","value":"1"},{"key":"phone","value":"88888888"}]}},"response":[]},{"name":"删除用户操作","request":{"method":"GET","header":[],"url":{"raw":"localhost:8082/DelteById?id=8","host":["localhost"],"port":"8082","path":["DelteById"],"query":[{"key":"id","value":"8"}]}},"response":[]},{"name":"更新用户","request":{"method":"GET","header":[],"url":{"raw":"localhost:8082/UpdateUser?id=2&name=狗子&age=1&phone=88888888&gender=2","host":["localhost"],"port":"8082","path":["UpdateUser"],"query":[{"key":"id","value":"2"},{"key":"name","value":"狗子"},{"key":"age","value":"1"},{"key":"phone","value":"88888888"},{"key":"gender","value":"2"}]}},"response":[]}]}
版权归原作者 金融小白数据分析之路 所有, 如有侵权,请联系我们删除。