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字节流 Java字节流主要用来处理二进制数据,包括字节、字节数组、字符串等。使用Java字节流,可以将数据从一个地方输入到Java程序,也可以从程序输出到另一个地方,比如文件、网络等。Java字节流主要包括InputStream、OutputStream和它们的子类。 文件输入输出 Java字节流的…

    Java 2023年5月26日
    00
  • java使用jdbc操作数据库示例分享

    下面是关于“java使用jdbc操作数据库示例分享”的完整攻略: 1. 准备工作 首先,我们需要准备好以下工具和环境:- JDK 1.8 或以上版本- MySQL 数据库- MySQL JDBC 驱动程序- IDE 工具(如 IntelliJ IDEA)或者代码编写器(如 VS Code) 2. 下载并导入JDBC驱动 要使用 JDBC 操作数据库,需要下载…

    Java 2023年6月16日
    00
  • 数组实现Java 自定义Queue队列及应用操作

    数组实现Java 自定义Queue队列及应用操作 队列(Queue)是一种基本数据结构,它在算法和程序设计中得到了广泛应用。队列主要是用来存储和管理一系列元素,并在这些元素中进行插入和删除操作。本篇攻略将详细介绍如何用Java数组来实现自定义队列,并列举相应的应用操作。 Queue定义 队列最基本的功能就是FIFO(先进先出),可在队列尾插入一个元素,也可在…

    Java 2023年5月27日
    00
  • extjs 学习笔记 四 带分页的grid

    下面是针对“EXTJS 学习笔记 四 —— 带分页的 Grid”这篇文章的详细攻略。 1. 文章概览 该篇文章主要是介绍如何使用 EXTJS 构建具有分页功能的 Grid 表格。其中,主要介绍以下内容: 引入必要的资源文件 创建分页工具栏 构建 Grid 表格 设置 Grid 表格分页参数 2. 引入必要的资源文件 在使用 EXTJS 构建 Grid 表格时…

    Java 2023年6月16日
    00
  • js函数获取html中className所在的内容并去除标签

    获取 HTML 中指定 className 所在的内容并去除标签,可以通过 JavaScript 函数来实现。下面是具体步骤: 选取需要获取 className 的元素 首先,需要通过 JavaScript 找到需要获取 className 的元素,可以使用 document.querySelector 或 document.querySelectorAll…

    Java 2023年6月15日
    00
  • Java使用Freemarker页面静态化生成的实现

    下面我将详细讲解“Java使用Freemarker页面静态化生成的实现”的完整攻略。 什么是Freemarker Freemarker是一款模板引擎,它通过模板和数据生成指定格式的文本输出。在Java Web开发中,可用于生成HTML、XML、JSON等各种格式的文本。在网站开发中,我们可以使用Freemarker来实现页面静态化。 实现步骤 引入依赖 在M…

    Java 2023年6月15日
    00
  • JPA的多表复杂查询的方法示例

    JPA是Java Persistence API的缩写,它是Java EE中的一个API,提供了Java对象到关系数据库表之间的映射(ORM)功能。JPA中的多表复杂查询是指需要查询多个关联表的查询操作。下面将介绍JPA的多表复杂查询的方法示例。 一、JPA多表查询基本操作 定义多表查询的类 在JPA中,可以定义一个类来封装多表查询的结果,该类中包含了所有需…

    Java 2023年5月20日
    00
  • 关于Java虚拟机HotSpot

    关于Java虚拟机HotSpot完整攻略 Java虚拟机(JVM)是Java语言的核心组件之一,它是Java语言跨平台特性的基石。HotSpot是目前最流行的Java虚拟机之一,它是由Sun Microsystems公司开发的,现在则由Oracle维护。本文将详细介绍HotSpot的概念、工作原理、性能调优和问题排查。 HotSpot的概念 HotSpot是…

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