java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot项目搭建到crud

Spring Boot从项目搭建到CRUD实战案例

作者:柒.梧.

这篇文章主要介绍了超详细Spring Boot实战案例从项目搭建到CRUD全实现,本文基于一套完整的Spring Boot实战代码,从项目架构、核心模块解析、运行配置到接口测试,全方位拆解了Spring Boot整合MyBatis实现数据交互与接口开发的全过程,需要的朋友可以参考下

Spring Boot作为Spring生态的核心子项目,以“约定优于配置”的理念极大简化了Java后端项目的开发流程,让开发者能够快速搭建可运行的企业级应用。本文将基于一套完整的Spring Boot实战代码,从项目架构设计、核心模块解析、功能实现逻辑、环境配置到运行测试,全方位拆解Spring Boot整合MyBatis实现数据交互与接口开发的全过程,适合Java后端开发者入门学习与实战参考。

一、项目整体架构概览

本次实战项目采用经典的分层架构设计,严格遵循“高内聚、低耦合”的设计原则,项目结构清晰,各模块职责明确。整体目录结构如下:

各层核心职责:

二、项目搭建核心步骤(基于Maven)

Spring Boot项目的搭建核心在于依赖配置与启动类编写,以下基于pom.xml与启动类代码,拆解搭建流程。

2.1 Maven依赖配置解析(pom.xml)

pom.xml是Maven项目的核心配置文件,用于管理项目依赖、指定JDK版本、定义项目坐标等。本项目依赖分为核心依赖与辅助依赖,各依赖作用如下:

<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.xxx</groupId>
    <artifactId>SpringBootDemoTest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringBootDemoTest</name>
    <description>SpringBootDemoTest</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>
    </dependencies>
</project>

关键说明:继承spring-boot-starter-parent是Spring Boot项目的核心特性,该父工程已预配置了常用依赖的版本、插件等,避免开发者手动管理版本冲突,实现“版本锁定”。若需自定义依赖版本,可在properties标签中指定。

2.2 项目启动类编写(SpringBootDemoTestApplication.java)

Spring Boot项目通过启动类启动Spring容器,开启自动配置与包扫描。本项目启动类代码如下:

@SpringBootApplication
@MapperScan("com.xxx.springbootdemotest.dao")
public class SpringBootDemoTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoTestApplication.class, args);
    }
}

核心注解解析:

启动类核心逻辑:main方法中通过SpringApplication.run()方法启动项目,该方法会创建Spring容器,加载所有配置与组件,并启动嵌入式服务器(默认Tomcat,端口8080)。

三、核心模块深度解析

本项目核心模块包括实体层(Model)、数据访问层(Dao)、控制层(Controller),以及MyBatis映射文件与项目配置文件。以下逐一解析各模块的实现逻辑与核心作用。

3.1 实体层(Model):数据封装核心

实体层对应数据库表结构,每个实体类的属性与数据库表的字段一一对应,通过getter/setter方法实现属性的访问与修改,同时重写toString()方法方便打印数据。本项目包含Role与Student两个实体类:

Role:

public class Role {
    private Integer id;
    private String name;
    private Integer password;
    private Integer age;
    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password=" + password +
                ", age=" + age +
                '}';
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getPassword() {
        return password;
    }
    public void setPassword(Integer password) {
        this.password = password;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

Student:

public class Student {
    private Integer id;
    private String name;
    private String sex;
    private Integer age;
    private String phone;
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", phone='" + phone + '\'' +
                '}';
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}

核心作用:

Role实体类逻辑与Student一致,对应Role表的字段(id、name、password、age),此处不再赘述。

3.2 数据访问层(Dao):数据库交互桥梁

Dao层基于MyBatis框架,定义数据操作接口,具体的SQL语句编写在对应的XML映射文件中。本项目Dao层仅包含StudentDao接口,实现Student表的CRUD(增删改查)操作:

public interface StudentDao {
    List<Student> findAll();
    List<Student> findByName(String name);
    int insert(Student student);
    int update(Student student);
    int delete(Integer id);
}

核心说明:

3.3 MyBatis映射文件:SQL语句载体

MyBatis映射文件(StudentDao.xml)用于编写SQL语句,通过标签(select、insert、update、delete)与Dao接口的方法一一对应,实现数据操作逻辑。文件路径为resources/mapper/StudentDao.xml:

<?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.xxx.springbootdemotest.dao.StudentDao">
    <select id="findAll" resultType="com.xxx.springbootdemotest.model.Student">
        select * from student
    </select>
    <select id="findByName" resultType="com.xxx.springbootdemotest.model.Student">
        select * from student where name like concat("%",#{name},"%")
    </select>
    <insert id="insert" parameterType="com.xxx.springbootdemotest.model.Student">
        insert into student(name,sex,phone,age) values (#{name},#{sex},#{phone},#{age})
    </insert>
    <update id="update" parameterType="com.xxx.springbootdemotest.model.Student">
        update student set name=#{name},sex=#{sex},phone=#{phone},age=#{age} where id=#{id}
    </update>
    <delete id="delete" parameterType="int">
        delete from student where id=#{id}
    </delete>
</mapper>

核心标签与属性解析:

3.4 控制层(Controller):请求处理核心

控制层是前端与后端的交互入口,通过Spring MVC的注解映射HTTP请求,接收请求参数,调用Dao层方法处理业务逻辑,最终返回响应结果。本项目包含RoleController与StudentController两个控制层类,分别处理Role与Student相关的请求。

3.4.1 RoleController:请求参数接收示例

RoleController提供两个POST接口,分别演示了普通参数接收与JSON参数接收的实现方式:

@Controller
@RequestMapping("/role")
public class RoleController {
    @PostMapping("/index")
    @ResponseBody
    public String index(String username,Integer age){
        System.out.println(username+" "+age);
        return "hello world";
    }
    @PostMapping("/index2")
    @ResponseBody
    public String index2(@RequestBody Role role){
        System.out.println(role.toString());
        return "hello world";
    }
}

核心注解与逻辑解析:

3.4.2 StudentController:CRUD接口实现

StudentController提供了Student表的CRUD接口,通过@Autowired注解注入StudentDao实例,调用其方法实现数据操作:

@Controller
@RequestMapping("/s")
public class StudentController {
    @Autowired
    private StudentDao studentDao;
    @RequestMapping("/findAll")
    @ResponseBody
    public List<Student> findAll(){
        List<Student> list = studentDao.findAll();
        return list;
    }
    @RequestMapping("/findByName/{name}")
    @ResponseBody
    public List<Student> findByName(@PathVariable String name){
        List<Student> list = studentDao.findByName(name);
        return list;
    }
    @PostMapping("/addStudent")
    @ResponseBody
    public Integer addStudent(@RequestBody Student student){
        return studentDao.insert(student);
    }
    @PostMapping("/updateStudent")
    @ResponseBody
    public Integer updateStudent(@RequestBody Student student){
        return studentDao.update(student);
    }
    @PostMapping("/delete/{id}")
    @ResponseBody
    public Integer deleteStudent(@PathVariable Integer id){
        return studentDao.delete(id);
    }
}

核心亮点解析:

3.5 项目配置文件(application.yaml)

application.yaml是Spring Boot项目的核心配置文件,用于配置服务器端口、数据库连接、MyBatis等参数,实现项目的灵活配置:

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8
    username: root
    password: 密码
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  type-aliases-package: com.xxx.springbootdemotest.model
  mapper-locations: classpath:mapper/*.xml

核心配置解析:

四、项目核心亮点与学习要点

4.1 核心亮点

4.2 学习要点

4.3 可扩展方向

本项目为基础实战案例,可在此基础上进行扩展,提升项目的企业级特性:

五、总结

本文基于一套完整的Spring Boot实战代码,从项目架构、核心模块解析、运行配置到接口测试,全方位拆解了Spring Boot整合MyBatis实现数据交互与接口开发的全过程。该项目虽然简单,但涵盖了Spring Boot开发的核心知识点,是入门Spring Boot的优质实战案例。

通过本项目的学习,开发者可以快速掌握Spring Boot的核心特性、MyBatis的整合流程以及接口开发的规范,为后续开发更复杂的企业级应用奠定坚实的基础。建议开发者亲自搭建项目,编写代码并进行测试,深入理解各模块的实现逻辑与底层原理,提升自身的开发能力。

到此这篇关于超详细Spring Boot实战案例:从项目搭建到CRUD全实现的文章就介绍到这了,更多相关Spring Boot项目搭建到CRUD内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文