johnnyboy-java

Springboot CRUD简单实现

SpringBoot对Spring的改善和优化,它基于约定优于配置的思想,提供了大量的默认配置和实现

使用SpringBoot之后,程序员只需按照它规定的方式去进行程序代码的开发即可,而无需再去编写一堆复杂的配置

SpringBoot的主要功能如下:

  • 起步依赖:SpringBoot以功能化的方式将需要的依赖进行组装,并且允许程序员以start的方式进行引入
  • 默认配置:SpringBoot实现了大量依赖框架的默认配置项,程序员无须再进行自己配置
  • 内置Tomcat:SpringBoot内置了一个tomcat,使用它开发的程序无需再进行tomcat部署,可直接运行

总之:SpringBoot最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少配置,让程序员去关注业务而非配置。

  • 简介
    在本篇博客中,我们将介绍如何使用SpringBootMyBatis框架实现一个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>

部分功能页面:

新增学生:

修改学生信息:

posted on 2024-01-27 15:04  johnnyboy-java  阅读(173)  评论(0)    收藏  举报