SpringBoot对Spring的改善和优化,它基于约定优于配置的思想,提供了大量的默认配置和实现
使用SpringBoot之后,程序员只需按照它规定的方式去进行程序代码的开发即可,而无需再去编写一堆复杂的配置
SpringBoot的主要功能如下:
- 起步依赖:SpringBoot以功能化的方式将需要的依赖进行组装,并且允许程序员以start的方式进行引入
- 默认配置:SpringBoot实现了大量依赖框架的默认配置项,程序员无须再进行自己配置
- 内置Tomcat:SpringBoot内置了一个tomcat,使用它开发的程序无需再进行tomcat部署,可直接运行
总之:SpringBoot最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少配置,让程序员去关注业务而非配置。
-
简介:
在本篇博客中,我们将介绍如何使用SpringBoot和MyBatis框架实现一个RESTFUL风格简单的CRUD(创建、读取、更新、删除)功能。逐步介绍每个部分的实现。 -
Pom.xml文件
点击查看代码
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!--spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.16</version>
</dependency>
<!--spring-jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.16</version>
</dependency>
<!--spring-mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<!--测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.16</version>
</dependency>
<!--json转换工具-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
配置文件写在resource目录下的application.yml中,
包含了项目的各种配置信息,包括服务器端口、日志级别、数据库连接信息等。
# 配置Tomcat端口
server:
port: 80
# 配置日志级别
logging:
level:
com.example: debug
# 配置数据库连接
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_example
username: user
password: password
# 配置MyBatis
mybatis:
configuration:
# MyBatis配置
type-aliases-package: com.example.boot.domain
mapper-locations: classpath:mapper/**/*Mapper.xml
controller层
- 控制器层是Spring MVC中的一部分,负责接收用户请求并调用相应的服务进行处理。在这里,我们使用@RestController注解将一个类标记为控制器,并使用@RequestMapping注解指定处理的URL路径。
@Slf4j
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping
public Result findAll(){
// 实现查询所有学生信息的功能
return studentService.findAll();
}
@PostMapping
public Result save(@RequestBody Student student){
// 实现新增学生信息的功能
return studentService.save(student);
}
@GetMapping("/{id}")
public Result findById(@PathVariable(name = "id")Integer id){
// 实现根据学号选择显示学生需要修改的信息的功能
return studentService.findById(id);
}
@PutMapping
public Result update(@RequestBody Student student){
// 实现修改学生信息的功能
return studentService.update(student);
}
@DeleteMapping("/{id}")
public Result deleteById(@PathVariable(name = "id")Integer id){
// 实现根据id删除学生信息的功能
return studentService.deleteById(id);
}
}
学生对象类
- 学生对象类用于表示学生的信息,通常包含学生的姓名、年龄、性别等属性。
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Student {
private Long id; // 学生ID
private String name; // 学生姓名
private int age; // 学生年龄
private String gender; // 学生性别
// 省略getter/setter方法
}
Service接口
- Service接口定义了服务层的方法,通常用于声明业务逻辑的接口。在这里,我们定义了一些CRUD操作的接口方法。
public interface StudentService {
Result findAll(); // 查询所有学生信息
Result save(Student student); // 新增学生信息
Result findById(Integer id); // 根据id查询学生信息
Result update(Student student); // 修改学生信息
Result deleteById(Integer id); // 根据id删除学生信息
}
service实现类
- 服务实现类负责实际的业务逻辑处理,包括对数据库的增删改查操作。在这里,我们使用@Service注解标记一个类为服务实现类,并使用@Transactional注解开启事务管理。
@Service
@Transactional
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Override
public Result findAll() {
// 实现查询所有学生信息的功能
List<Student> students = studentMapper.findAll();
return new Result(students);
}
@Override
public Result save(Student student) {
// 实现新增学生信息的功能
studentMapper.save(student);
return new Result("保存成功");
}
@Override
public Result findById(Integer id) {
// 实现根据学号选择显示学生需要修改的信息的功能
Student student = studentMapper.findById(id);
return new Result(student);
}
@Override
public Result update(Student student) {
// 实现修改学生信息的功能
studentMapper.update(student);
return new Result("修改成功");
}
@Override
public Result deleteById(Integer id) {
// 实现根据id删除学生信息的功能
studentMapper.deleteById(id);
return new Result("删除成功");
}
}
sql语句:
create database springboot;
use springboot;
-- 创建名为tb_student的表
CREATE TABLE tb_student (
id INT PRIMARY KEY AUTO_INCREMENT,
number VARCHAR(50),
userName VARCHAR(100),
birthday DATE,
address VARCHAR(255)
);
-- 添加8行数据
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('001', '张三', '1995-05-20', '北京');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('002', '李四', '1997-08-15', '上海');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('003', '王五', '1996-11-30', '广州');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('004', '赵六', '1998-04-25', '深圳');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('005', '小明', '1999-01-10', '成都');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('006', '小红', '1994-07-05', '重庆');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('007', '小华', '1993-09-12', '天津');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('008', '小李', '1992-12-28', '南京');
Mapper.xml文件里的SQL执行语句:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.boot.mapper.StudentMapper">
<!-- void save(Student student);-->
<insert id="save" parameterType="com.example.boot.domain.Student">
INSERT INTO tb_student (number, userName, birthday, address)
VALUES (#{number}, #{userName}, #{birthday}, #{address});
</insert>
<!-- void update(Student student);-->
<update id="update" parameterType="com.example.boot.domain.Student">
UPDATE tb_student
SET number = #{number},userName=#{userName},birthday=#{birthday},address=#{address}
WHERE id = #{id}
</update>
<!-- void deleteById(Integer id);-->
<delete id="deleteById">
DELETE FROM tb_student WHERE id = #{id}
</delete>
<!-- List<Student> findAll(); -->
<select id="findAll" resultType="com.example.boot.domain.Student">
select * from tb_student
</select>
<!-- Student findById(Integer id);-->
<select id="findById" resultType="com.example.boot.domain.Student">
select * from tb_student where id = #{id}
</select>
</mapper>
部分功能页面:
新增学生:
修改学生信息:
标签:Springboot,address,CRUD,public,Result,student,简单,tb,id
From: https://www.cnblogs.com/johnnyboy-java/p/17991453