职责: 负责处理HTTP请求和响应,作为前端与后端服务交互的接口。
实现: 通过@RestController或@Controller注解定义控制器类,并使用如@GetMapping, @PostMapping等注解来映射HTTP请求。
职责: 实现业务逻辑的核心处理,包括数据的处理、验证、计算等。
实现: 通常通过@Service注解来定义服务类,并且这些服务类会被注入到Controller中以供调用。
职责: 负责数据库操作,即数据的增删改查。
实现: 使用MyBatis的@Mapper注解定义接口,并在接口中声明SQL语句的方法。这些方法会被框架自动代理实现,完成与数据库的交互。
职责: 存储数据模型,用于表示应用程序中的实体对象。
实现: 定义Java类来表示数据库表中的记录,通常包括属性和简单的getter/setter方法。
这种分层设计有助于实现高内聚低耦合的设计原则,使得各个组件可以独立开发和测试,同时也方便了后期维护和扩展。
本次演示用到mysql8数据库进行操作
create database if not exists mybatis;
use mybatis;
create table user(
id int unsigned primary key auto_increment comment 'ID',
name varchar(100) comment '姓名',
age tinyint unsigned comment '年龄',
gender tinyint unsigned comment '性别, 1:男, 2:女',
phone varchar(11) comment '手机号'
) comment '用户表';
insert into user(id, name, age, gender, phone) VALUES (null,'白眉鹰王',55,'1','18800000000');
insert into user(id, name, age, gender, phone) VALUES (null,'金毛狮王',45,'1','18800000001');
insert into user(id, name, age, gender, phone) VALUES (null,'青翼蝠王',38,'1','18800000002');
insert into user(id, name, age, gender, phone) VALUES (null,'紫衫龙王',42,'2','18800000003');
insert into user(id, name, age, gender, phone) VALUES (null,'光明左使',37,'1','18800000004');
insert into user(id, name, age, gender, phone) VALUES (null,'光明右使',48,'1','18800000005');
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
数据库配置:启动类、数据库、用户名、密码
开启端口配置:默认为8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis
username: root
password: 123456
server:
port: 8082
parent 是集成了父工程
mysql驱动依赖、mybatis的起步依赖、springboot启动web、 lombok 注解
<project xmlns="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.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>3.1.3version>
<relativePath/>
parent>
<groupId>com.itheimagroupId>
<artifactId>springboot-mybatisartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>springboot-mybatisname>
<description>springboot-mybatisdescription>
<properties>
<java.version>17java.version>
properties>
<dependencies>
<dependency>
<groupId>com.mysqlgroupId>
<artifactId>mysql-connector-jartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>3.0.0version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<version>3.1.3version>
plugin>
plugins>
build>
project>
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,通常用于指定转发或重定向的视图名称,或者告知调用者操作的结果。
package com.itheima.springbootmybatis.controller;
import com.itheima.springbootmybatis.pojo.User;
import com.itheima.springbootmybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findById")
public User findById(Integer id){
return userService.findById(id);
}
@RequestMapping("/findAll")
public List<User> findAll() {
return userService.findAll();
}
@RequestMapping("/AddUser")
public String AddUser(User user){
return userService.AddUser(user);
}
@RequestMapping("/DelteById")
public String DelteById(Integer id){
return userService.DelteById(id);
}
@RequestMapping("/UpdateUser")
public String UpdateUser(User user){
return userService.UpdateUser(user);
}
}
接口:UserService.java
package com.itheima.springbootmybatis.service;
import com.itheima.springbootmybatis.pojo.User;
import java.util.List;
public interface UserService {
User findById(Integer id);
List<User> findAll();
String DelteById(Integer id);
String AddUser(User user);
String UpdateUser(User user);
}
实现类:UserServiceImpl.java
findById(Integer id):根据用户ID查询单个用户信息。
findAll():查询所有用户信息并返回用户列表。
DelteById(Integer id):根据用户ID删除用户信息,成功后返回"删除成功"的消息。
AddUser(User user):向数据库中添加新的用户信息,成功后返回"添加成功"的消息。
UpdateUser(User user):更新用户信息,成功后返回"更新成功"的消息。
package com.itheima.springbootmybatis.service.impl;
import com.itheima.springbootmybatis.mapper.UserMapper;
import com.itheima.springbootmybatis.pojo.User;
import com.itheima.springbootmybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User findById(Integer id) {
return userMapper.findById(id);
}
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public String DelteById(Integer id) {
userMapper.DelteById(id);
return "删除成功";
}
@Override
public String AddUser(User user) {
userMapper.AddUser(user);
return "添加成功";
}
@Override
public String UpdateUser(User user) {
userMapper.UpdateUser(user);
return "更新成功";
}
}
package com.itheima.springbootmybatis.mapper;
import com.itheima.springbootmybatis.pojo.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("select * from user where id = #{id}")
User findById(Integer id);
@Select("select * from user")
List<User> findAll();
@Delete("delete from user where id = #{id}")
void DelteById(Integer id);
@Insert("insert into user(name,age,gender,phone) values(#{name},#{age},#{gender},#{phone})")
void AddUser(User user);
@Update("update user set name = #{name},age = #{age},gender = #{gender},phone = #{phone} where id = #{id}")
void UpdateUser(User user);
}
package com.itheima.springbootmybatis.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Data 包括了@Getter @Setter @ToString @RequiredArgsConstructor @EqualsAndHashCode @ToString @Accessors(chain = true)
*/
@Data
@NoArgsConstructor //无参构造
@AllArgsConstructor //有参构造
public class User {
private Integer id;
private String name;
private Short age;
private Short gender;
private String phone;
}
postman ,可以用import进行导入测试。
四种基础操作接口测试.postman_collection.json
{
"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": []
}
]
}