Spring boot2+jpa+thymeleaf实现增删改查

以下是详细讲解“Spring boot2+jpa+thymeleaf实现增删改查”的完整攻略。

1. 准备工作

在开始实现增删改查功能之前,我们需要进行一些准备工作。

1.1 创建Spring Boot工程

首先,我们需要创建一个Spring Boot工程,在这里可以使用Spring Initializr快速创建一个基础工程。在创建工程的过程中需要添加依赖Spring Web StarterSpring Data JPAThymeleaf

1.2 创建数据库

接下来,我们需要创建数据库,并在数据库中创建用于存储数据的表。这里以一个用户表为例,表结构如下:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.3 配置数据源

在配置文件中,我们需要配置数据源和JPA的相关信息。具体的配置信息如下:

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# JPA配置
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

2. 实现增删改查功能

接下来,我们开始实现增删改查功能,这里需要编写控制器、服务和数据访问层的代码。

2.1 控制器

首先,我们需要编写控制器,通过控制器来接收用户的请求,并将请求转发到服务中进行处理。控制器的代码如下:

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查询用户列表
     * @param model
     * @return
     */
    @GetMapping("/list")
    public String userList(Model model) {
        List<User> userList = userService.findAll();
        model.addAttribute("userList", userList);
        return "user/list";
    }

    /**
     * 跳转到添加用户页面
     * @return
     */
    @GetMapping("/add")
    public String addUserPage() {
        return "user/add";
    }

    /**
     * 添加用户
     * @param user
     * @return
     */
    @PostMapping("/add")
    public String addUser(User user) {
        userService.save(user);
        return "redirect:/user/list";
    }

    /**
     * 跳转到修改用户页面,同时回显用户数据
     * @param id
     * @param model
     * @return
     */
    @GetMapping("/edit/{id}")
    public String editUserPage(@PathVariable("id") Long id, Model model) {
        User user = userService.findById(id);
        model.addAttribute("user", user);
        return "user/edit";
    }

    /**
     * 修改用户
     * @param user
     * @return
     */
    @PostMapping("/edit")
    public String editUser(User user) {
        userService.save(user);
        return "redirect:/user/list";
    }

    /**
     * 删除用户
     * @param id
     * @return
     */
    @GetMapping("/delete/{id}")
    public String deleteUser(@PathVariable("id") Long id) {
        userService.deleteById(id);
        return "redirect:/user/list";
    }
}

2.2 服务

控制器中的方法需要实现具体的业务逻辑,这里需要编写服务的代码,服务中的方法用于操作数据库,与数据访问层进行交互。服务层的代码如下:

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    /**
     * 查询所有用户
     * @return
     */
    public List<User> findAll() {
        return userRepository.findAll();
    }

    /**
     * 根据id查询用户
     * @param id
     * @return
     */
    public User findById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    /**
     * 保存用户
     * @param user
     */
    public void save(User user) {
        userRepository.save(user);
    }

    /**
     * 根据id删除用户
     * @param id
     */
    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }
}

2.3 数据访问层

服务中需要与数据访问层进行交互,这里需要编写数据访问层的代码,用于操作数据库。数据访问层的代码如下:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

至此,我们已经完成了增删改查功能的实现,现在我们需要编写前端页面来与用户进行交互。

3. 编写前端页面

在这里,我们通过Thymeleaf引擎编写前端页面,通过表单的方式与用户进行交互。以下是添加用户和修改用户的页面。

3.1 添加用户页面

<!DOCTYPE html>
<html lang="zh-CN"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
<h3>添加用户</h3>
<form method="post" action="/user/add">
    <table>
        <tr>
            <td>用户名:</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="password"></td>
        </tr>
        <tr>
            <td>邮箱:</td>
            <td><input type="email" name="email"></td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="submit" value="保存">
            </td>
        </tr>
    </table>
</form>
</body>
</html>

3.2 修改用户页面

<!DOCTYPE html>
<html lang="zh-CN"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>修改用户</title>
</head>
<body>
<h3>修改用户</h3>
<form method="post" action="/user/edit">
    <input type="hidden" name="id" th:value="${user.id}">
    <table>
        <tr>
            <td>用户名:</td>
            <td><input type="text" name="username" th:value="${user.username}"></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="password" th:value="${user.password}"></td>
        </tr>
        <tr>
            <td>邮箱:</td>
            <td><input type="email" name="email" th:value="${user.email}"></td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="submit" value="保存">
            </td>
        </tr>
    </table>
</form>
</body>
</html>

以上是使用Spring Boot2+jpa+thymeleaf实现增删改查的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring boot2+jpa+thymeleaf实现增删改查 - Python技术站

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

相关文章

  • Spring Boot 整合 Apache Dubbo的示例代码

    这里给出一个完整的 Spring Boot 整合 Apache Dubbo 的示例代码攻略,包含以下内容: 环境准备 创建 Spring Boot 项目并添加依赖 配置 Dubbo 的注册中心和提供者 编写 Dubbo 的服务提供者 编写 Dubbo 的服务消费者 运行并测试示例代码 以下是具体的步骤: 1. 环境准备 首先,你需要安装并配置好以下环境: J…

    Java 2023年5月19日
    00
  • SpringBoot 定制化返回数据的实现示例

    下面是关于「SpringBoot 定制化返回数据的实现示例」的完整攻略,包含以下内容: 背景介绍 基本思路 实现步骤 示例说明 背景介绍 在实际开发中,我们经常需要对接口返回数据进行定制化处理。例如,有时候我们需要统一的返回格式、或者在某些接口中需要添加额外的字段信息。这时候,我们就需要对 SpringBoot 中默认的返回数据进行定制化处理。 基本思路 S…

    Java 2023年5月26日
    00
  • Java Character类对单个字符操作原理解析

    Java Character类对单个字符操作原理解析 在Java中,Character类是一个非常重要的类,主要用于对单个字符的操作。它包含了一些静态方法和实例方法,可以用于判断字符的数字、大小写、空格、是否是字母等,下面我们来详细讲解这个类的一些方法和原理。 Character类的构造方法 Character(char c) 创建一个新的 Characte…

    Java 2023年5月27日
    00
  • 常见的Java诊断工具有哪些?

    常见的Java诊断工具包括以下几类: 1. JVM监控工具 这类工具主要是对Java虚拟机进行监控,例如查看程序运行时的内存情况、线程情况等。 示例使用 jstat 工具 jstat能够监控JVM中的各种指标,例如 HeapSize、Class装载信息、GC情况、线程运行情况等等。以下是使用 jstat 命令来查看 heap usage 的示例: jstat…

    Java 2023年5月11日
    00
  • JavaScript实现组件化和模块化方法详解

    JavaScript 实现组件化和模块化方法详解 JavaScript 的组件化和模块化是现代前端开发的重要组成部分。组件化和模块化可以以一种更为可靠、灵活和模块化的方式组织代码,使它们更易于维护和扩展。本文将详细介绍 JavaScript 实现组件化和模块化的方法,包括两个示例。 组件化 什么是组件化? 组件化是一种将代码组织成小的、独立的、功能完整的模块…

    Java 2023年6月15日
    00
  • java中gc算法实例用法

    Java中GC算法实例用法攻略 什么是Java中的垃圾回收(GC) Java是一种自带垃圾回收机制的编程语言。当Java程序运行时,分配给该程序的内存空间与操作系统可能分配给其他相应程序的内存空间相对独立。为了保证Java应用程序的正常运行,需要对Java程序分配和释放内存进行管理,程序中不再被引用的对象将会被垃圾回收机制回收。 Java中的垃圾回收算法 在…

    Java 2023年5月19日
    00
  • 详解Spring Boot 使用Spring security 集成CAS

    下面是“详解Spring Boot 使用Spring security 集成CAS”的完整攻略。 1. 什么是CAS CAS(Central Authentication Service)是企业级的单点登录解决方案,可以为多个客户端提供统一的认证和授权管理服务。它使用了流行的Web认证的协议,如OAuth、OpenID等,同时可以整合LDAP等现有认证机制。…

    Java 2023年5月20日
    00
  • Java中关于文件路径读取问题的分析

    下面是关于Java中文件路径读取问题的分析攻略,包括常见问题及解决办法。 问题描述 在Java程序中,读取文件时常会遇到文件路径问题。文件可能位于磁盘的不同位置,如何正确地指定文件路径是很重要的。 解决方法 在解决文件路径问题之前,先了解一下文件路径的分类。 绝对路径与相对路径 绝对路径:从磁盘根目录开始的路径,如 Windows 中的 C:\Users\z…

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