SpringBoot整合Mybatis与thymleft实现增删改查功能详解

我会尽可能详细地讲解“SpringBoot整合Mybatis与Thymeleaf实现增删改查功能”的攻略,让您可以轻松实现该功能。

1. 前置条件

在开始之前,确保您已经完成以下准备工作:

  • 安装Java JDK和IDE(如Eclipse、IntelliJ IDEA等)
  • 掌握SpringBoot、Mybatis及Thymeleaf的基础知识

2. 创建SpringBoot项目

首先,我们要创建一个SpringBoot项目,可以使用Spring Initializr来生成基础代码。在创建项目时,需要勾选Mybatis和Thymeleaf的相关依赖。

在Eclipse中创建项目的步骤如下:

  • 点击 File -> New -> Spring Starter Project
  • 输入项目名称和相关信息,点击 Next
  • 选择使用Maven构建工具,并选择需要的依赖项,包括MyBatis和Thymeleaf
  • 点击 Finish 完成项目创建。

3. 配置数据库

在进行数据持久化操作之前,我们需要先配置数据库。可以在application.properties文件中添加以下内容:

spring.datasource.url= jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

这里我们以MySQL数据库为例,配置了数据库连接的URL、用户名、密码及驱动程序。

4. 创建实体类和持久层接口

在进行数据库操作时,我们需要创建相应的实体类和持久层接口,以便进行数据持久化操作。

在本例中,我们创建一个Person实体类和PersonMapper持久层接口:

public class Person {
    private Integer id;
    private String name;
    private Integer age;
    // 省略getter/setter方法
}

@Mapper
public interface PersonMapper {
    @Select("SELECT id,name,age FROM person WHERE id=#{id}")
    Person findById(Integer id);

    @Insert("INSERT INTO person(name,age) VALUES(#{name},#{age})")
    void save(Person person);

    @Update("UPDATE person SET name=#{name},age=#{age} WHERE id=#{id}")
    void update(Person person);

    @Delete("DELETE FROM person WHERE id=#{id}")
    void delete(Integer id);

    @Select("SELECT id,name,age FROM person")
    List<Person> findAll();
}

在上面的代码片段中,我们使用了Mybatis的注解来指定SQL语句和参数,通过@Id注解来设置主键属性。

需要注意的是,我们需要在PersonMapper接口上添加@Mapper注解,以便让SpringBoot能够自动扫描该接口并生成相应的代理对象。

5. 创建控制器和HTML页面

在进行增删改查操作时,我们需要创建相应的控制器和HTML页面。

在本例中,我们创建一个PersonController控制器和person.html、person_add.html、person_edit.html三个HTML页面:

@Controller
public class PersonController {
    @Autowired
    private PersonMapper personMapper;

    @GetMapping("/person")
    public String list(Model model) {
        List<Person> persons = personMapper.findAll();
        model.addAttribute("persons", persons);
        return "person";
    }

    @GetMapping("/person/add")
    public String add() {
        return "person_add";
    }

    @PostMapping("/person/save")
    public String save(Person person) {
        personMapper.save(person);
        return "redirect:/person";
    }

    @GetMapping("/person/edit/{id}")
    public String edit(@PathVariable("id") Integer id, Model model) {
        Person person = personMapper.findById(id);
        model.addAttribute("person", person);
        return "person_edit";
    }

    @PostMapping("/person/update")
    public String update(Person person) {
        personMapper.update(person);
        return "redirect:/person";
    }

    @GetMapping("/person/delete/{id}")
    public String delete(@PathVariable("id") Integer id) {
        personMapper.delete(id);
        return "redirect:/person";
    }
}

上述代码中,我们首先使用@Autowired注解将PersonMapper注入到控制器中,然后分别实现了列表、添加、编辑、删除等操作。

对应的HTML页面代码如下:

person.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Person List</title>
</head>
<body>
    <h1>Person List</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Operation</th>
        </tr>
        <tr th:each="person : ${persons}">
            <td th:text="${person.getId()}"></td>
            <td th:text="${person.getName()}"></td>
            <td th:text="${person.getAge()}"></td>
            <td><a th:href="@{/person/edit/{id}(id=${person.getId()})}">Edit</a> | <a
                th:href="@{/person/delete/{id}(id=${person.getId()})}">Delete</a></td>
        </tr>
    </table>
    <p>
        <a href="/person/add">Add Person</a>
    </p>
</body>
</html>

person_add.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Add Person</title>
</head>
<body>
    <h1>Add Person</h1>
    <form action="/person/save" method="post">
        <label>Name:</label> <input type="text" name="name" /><br />
        <label>Age:</label> <input type="text" name="age" /><br />
        <input type="submit" value="Save" />
    </form>
    <p>
        <a href="/person">Person List</a>
    </p>
</body>
</html>

person_edit.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Edit Person</title>
</head>
<body>
    <h1>Edit Person</h1>
    <form action="/person/update" method="post">
        <input type="hidden" th:name="${_csrf.parameterName}"
            th:value="${_csrf.token}" />
        <input type="hidden" name="id" th:value="${person.id}" />
        <label>Name:</label> <input type="text" name="name"
            th:value="${person.name}" /><br /> <label>Age:</label> <input
            type="text" name="age" th:value="${person.age}" /><br />
        <input type="submit" value="Save" />
    </form>
    <p>
        <a href="/person">Person List</a>
    </p>
</body>
</html>

在上述HTML页面的代码中,我们使用了Thymeleaf模板引擎来进行页面渲染,其中使用了Thymeleaf的标准表达式来显示数据、处理表单等操作。

6. 运行测试

当我们完成上述步骤后,就可以对我们的增删改查功能进行测试了。可以在浏览器中输入 http://localhost:8080/person 来访问Person列表页面,测试增删改查等功能。

我们也可以使用Postman等工具来进行API的测试,以便更加方便的进行接口测试和验证。

示例1:查询Person列表

  • 请求地址:http://localhost:8080/person
  • 请求方法:GET

返回数据:

[
    {
        "id": 1,
        "name": "张三",
        "age": 18
    },
    {
        "id": 2,
        "name": "李四",
        "age": 20
    },
    {
        "id": 3,
        "name": "王五",
        "age": 22
    }
]

示例2:添加Person

  • 请求地址:http://localhost:8080/person/save
  • 请求方法:POST
  • 请求体:
{
    "name": "赵六",
    "age": 25
}

返回数据:

重定向到:/person

总结

通过本文的讲解,我们可以学习到在SpringBoot中如何进行Mybatis和Thymeleaf的整合,以及如何实现增删改查等基本功能。希望本文能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合Mybatis与thymleft实现增删改查功能详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java 如何解决跨域问题

    Java 如何解决跨域问题 跨域问题是指在浏览器中,当一个网页的脚本试图访问另一个网页的脚本时,由于浏览器的同源策略,会被拒绝访问。Java Web应用程序可以通过以下几种方式来解决跨域问题。 1. CORS(跨域资源共享) CORS是一种机制,允许Web应用程序从不同的域访问其资源。CORS通过在响应头中添加Access-Control-Allow-Ori…

    Java 2023年5月18日
    00
  • Spring MVC Controller返回值及异常的统一处理方法

    下面我将为你详细讲解“Spring MVC Controller返回值及异常的统一处理方法”的完整攻略。 一、Controller返回值的处理 在Spring MVC框架中,Controller负责处理客户端的HTTP请求并响应相应的结果给客户端。当客户端请求到达Controller之后,Controller需要根据业务逻辑处理数据,并根据结果返回响应结果给…

    Java 2023年5月27日
    00
  • 基于SpringBoot服务端表单数据校验的实现方式

    下面我将为你详细讲解基于SpringBoot服务端表单数据校验的实现方式的完整攻略。本攻略将包含以下内容: 前置条件 SpringBoot服务端表单校验的概念 SpringBoot服务端表单校验方案的实现 两条示例说明 1. 前置条件 在学习本攻略前,你需要具备以下基础知识: Java编程基础 SpringBoot框架的使用 2. SpringBoot服务端…

    Java 2023年6月1日
    00
  • spring之Bean的生命周期详解

    Spring之Bean的生命周期详解 在Spring的IoC容器中,Bean的生命周期可以分为多个阶段。接下来,我们将从创建Bean实例,初始化Bean,调用Bean的方法,销毁Bean等阶段,详细讲解Bean的生命周期。 Bean的创建 在容器初始化时,IoC容器会先读取配置文件中的Bean定义,并将Bean的实例化交给BeanFactoryPostPro…

    Java 2023年5月31日
    00
  • java实现打砖块游戏算法

    下面是详细讲解“Java实现打砖块游戏算法”的完整攻略: 1. 游戏规则 在开始讲解算法之前,首先需要了解砖块游戏的规则: 游戏区域由一个矩形网格构成,其中有一些砖块。 游戏中有一个挡板,玩家可以通过控制挡板来阻挡弹球。 玩家需要控制弹球击中砖块,摧毁所有砖块才能过关。 弹球碰到挡板或者砖块边缘会反弹。 2. 实现思路 要想实现砖块游戏算法,需要先了解以下几…

    Java 2023年5月19日
    00
  • Java多线程(单例模式,堵塞队列,定时器)详解

    Java多线程(单例模式,堵塞队列,定时器)详解 简介 Java多线程对于Java程序员而言是非常重要的一个概念。Java天生支持多线程的并发操作,因此Java开发人员需要掌握多线程知识来提高程序的并发性和性能。 本文将重点介绍Java中多线程相关的三个重要概念:单例模式、阻塞队列和定时器。 单例模式 单例模式是一种常见的设计模式,它保证一个类只有一个实例,…

    Java 2023年5月18日
    00
  • SpringBoot Bean花式注解方法示例下篇

    请听我详细讲解“SpringBoot Bean花式注解方法示例下篇”的完整攻略。 概述 本文主要介绍在Spring Boot项目中常用的Bean注解及其用法,包括@Component、@Service、@Repository、@Controller、@Configuration、@Bean等。 @Component注解 @Component是最常用的注解之一…

    Java 2023年6月3日
    00
  • JSP的request对象实例详解

    下面是关于“JSP的request对象实例详解”的完整攻略: 一、request对象简介 在JSP中,request对象代表了客户端向服务器发起的请求,并且提供了一系列方法来获取请求中的信息。通常情况下,我们会使用request对象来处理表单提交、处理URL参数、获取HTTP头信息等操作。 二、request对象的常用方法 1. 获取用户提交的表单数据 当用…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部