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日

相关文章

  • Java中实现线程间通信的实例教程

    下面我将为您详细讲解“Java中实现线程间通信的实例教程”的完整攻略。 什么是线程间通信 线程是 Java 中最基本的并发编程单元,线程之间的通信是指多个线程在访问共享资源过程中,通过某种协作机制对资源实现共享和互斥访问的过程。线程间通信是 Java 并发编程中的核心概念之一。 线程间通信实现方式 Java 中实现线程间通信一般有三种方式: 共享内存 消息传…

    Java 2023年5月18日
    00
  • Java面试题冲刺第三十天–数据库(6)

    “Java面试题冲刺第三十天–数据库(6)”这篇文章主要介绍了关于数据库中的事务控制及其实现方式等内容。下面是该文章的完整攻略: 事务控制 事务是指在数据库中执行的一个操作序列,这些操作要么全部执行成功,要么全部执行失败,不会出现执行了部分操作后停止的情况。事务控制是指保证事务的正确性和完整性,及其一致性的机制。 事务的ACID特性 原子性(Atomici…

    Java 2023年5月19日
    00
  • spring boot 集成 shiro 自定义密码验证 自定义freemarker标签根据权限渲染不同页面(推荐

    Spring Boot 集成 Shiro 在 Spring Boot 中集成 Shiro 需要以下步骤: 引入依赖。在 pom.xml 中添加以下依赖: <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</a…

    Java 2023年5月20日
    00
  • jsp传值本地无乱码测试机出现乱码问题解决

    下面我将详细讲解“jsp传值本地无乱码测试机出现乱码问题解决”的完整攻略。 一、问题描述 当我们在本地运行jsp页面传输值,并将页面上传至测试机运行时,有时会出现中文乱码的问题。这是因为本地和测试机的编码不一致所造成的。 二、解决方法 配置jsp页面编码方式 在jsp页面中,加入以下代码进行页面编码的设置。以UTF-8编码方式为例: <%@ page …

    Java 2023年6月15日
    00
  • Java实现邮件发送的过程及代码详解

    Java实现邮件发送的过程及代码详解 一、背景介绍 现在,在很多程序开发或运维工作中,邮件是经常使用的一种通讯方式。Java提供了SMTP协议和JavaMail API来实现邮件的发送和接收操作。SMTP协议主要用于传输邮件,而JavaMail API是用来操作邮件的。 二、JavaMail API的基本结构 JavaMail API的基本结构如下: Ses…

    Java 2023年6月15日
    00
  • MyBatis-Plus 通用IService使用详解

    以下是关于“MyBatis-Plus 通用IService使用详解”的详细攻略: 什么是MyBatis-Plus通用IService? 在使用MyBatis-Plus进行数据库操作时,通用IService提供了一套标准CURD方法,极大减轻我们手写CRUD的压力。通用IService是MyBatis-Plus提供的一个接口,包含一系列的基础CURD方法,可以…

    Java 2023年5月20日
    00
  • 一篇文章教带你了解Java Spring之自动装配

    一篇文章教带你了解Java Spring之自动装配 1. 理解什么是自动装配 在Spring中,依赖注入(DI)是实现对象之间解耦的一种常用方式。而自动装配(Autowiring)则是一种更加便利的依赖注入方式,它能够自动地为容器中需要注入的对象找到合适的实例。自动装配可以减少开发者对注入实例的手动处理,减少了代码冗余。 2. Spring的自动装配模式 S…

    Java 2023年5月19日
    00
  • JS+JSP checkBox 全选具体实现

    为实现JS+JSP CheckBox全选功能,可以按照以下步骤进行操作: 1.编写JSP文件在JSP文件中,需要在HTML中添加JS代码,使用了checkbox元素的onclick事件。同时,将checkbox的name属性设为相同的值,这样才能实现全选或者全不选的效果。 <%@ page language="java" conte…

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