综合实践:JPA+Thymeleaf 增删改查

在Java Web开发中,使用JPA(Java Persistence API)作为ORM(对象关系映射)框架和Thymeleaf作为模板引擎来实现增删改查(CRUD)操作是一种常见且高效的方式。以下是一个简单的示例,展示如何使用Spring Boot、JPA和Thymeleaf来实现一个基本的CRUD应用。

1. 搭建Spring Boot项目

首先,你需要创建一个Spring Boot项目。可以使用Spring Initializr(https://start.spring.io/)来快速生成项目结构。

  • 选择项目类型:Maven Project 或 Gradle Project
  • 语言:Java
  • Spring Boot版本:选择最新的稳定版本
  • 项目元数据:填写Group和Artifact名称
  • 依赖:Spring Web, Spring Data JPA, Thymeleaf, H2 Database(或你选择的数据库)

2. 配置数据库

src/main/resources/application.propertiesapplication.yml中配置数据库连接。以下是一个使用H2数据库的示例:

java 复制代码
spring.datasource.url=jdbc:h2:mem:testdb  
spring.datasource.driverClassName=org.h2.Driver  
spring.datasource.username=sa  
spring.datasource.password=password  
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect  
spring.h2.console.enabled=true

3. 创建实体类

假设我们要管理一个Person实体,创建一个Person.java类:

java 复制代码
import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;  
import javax.persistence.GenerationType;  
import javax.persistence.Id;  
  
@Entity  
public class Person {  
    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)  
    private Long id;  
    private String name;  
    private int age;  
  
    // 构造器、getter和setter省略  
}

4. 创建JPA仓库

创建一个PersonRepository.java接口来继承JpaRepository

java 复制代码
import org.springframework.data.jpa.repository.JpaRepository;  
  
public interface PersonRepository extends JpaRepository<Person, Long> {  
}

5. 创建服务层

创建一个PersonService.java类来处理业务逻辑:

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Service;  
  
import java.util.List;  
  
@Service  
public class PersonService {  
  
    @Autowired  
    private PersonRepository personRepository;  
  
    public List<Person> findAll() {  
        return personRepository.findAll();  
    }  
  
    // 添加、更新、删除方法省略  
}

6. 创建控制器

创建一个PersonController.java类来处理HTTP请求:

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Controller;  
import org.springframework.ui.Model;  
import org.springframework.web.bind.annotation.*;  
  
@Controller  
public class PersonController {  
  
    @Autowired  
    private PersonService personService;  
  
    @GetMapping("/")  
    public String listPersons(Model model) {  
        model.addAttribute("persons", personService.findAll());  
        return "persons";  
    }  
  
    // 添加、更新、删除方法的视图映射省略  
}

7. 创建Thymeleaf模板

src/main/resources/templates目录下创建persons.html模板文件:

java 复制代码
<!DOCTYPE html>  
<html xmlns:th="http://www.thymeleaf.org">  
<head>  
    <title>Persons</title>  
</head>  
<body>  
    <h1>Persons</h1>  
    <table>  
        <thead>  
            <tr>  
                <th>ID</th>  
                <th>Name</th>  
                <th>Age</th>  
            </tr>  
        </thead>  
        <tbody>  
            <tr th:each="person : ${persons}">  
                <td th:text="${person.id}"></td>  
                <td th:text="${person.name}"></td>  
                <td th:text="${person.age}"></td>  
            </tr>  
        </tbody>  
    </table>  
    <!-- 添加表单、链接等用于CRUD操作 -->  
</body>  
</html>

8. 运行和测试

运行Spring Boot应用,并访问http://localhost:8080/来查看你的CRUD应用。

以上步骤提供了一个基本的框架,你可以根据具体需求添加表单、链接和逻辑来完善CRUD操作。

相关推荐
cr7xin12 分钟前
缓存查询逻辑及问题解决
数据库·redis·后端·缓存·go
何中应18 分钟前
Oracle数据库安装(Windows)
java·数据库·后端·oracle
遇见你的雩风38 分钟前
【MySQL】--- 视图
数据库·mysql
Thepatterraining1 小时前
大厂架构师揭秘:MySQL缓冲池为什么不用mmap?LRU-K算法详解
数据库·mysql
LB21121 小时前
Redis黑马点评 分布式锁
数据库·redis·分布式
无敌最俊朗@1 小时前
SQlite:电影院售票系统中的主键(单列,复合)约束应用
java·开发语言·数据库
全栈工程师修炼指南1 小时前
DBA | Oracle 数据备份迁移之数据泵 expdp/impdp 工具实战指南
数据库·oracle·dba
迷了璐的航1 小时前
mybatis解决查询中使用group by时出现sql_mode=only_full_group_by
数据库·sql·mybatis
金仓拾光集1 小时前
「安全升级 + 零代码平替」金仓数据库如何实现MongoDB社交动态发布系统的无缝迁移?
数据库·安全·mongodb·kingbase·kingbasees·数据库平替用金仓·金仓数据库
金仓拾光集1 小时前
告别“凭感觉”告警,金仓数据库替换MongoDB让运维更精准
运维·数据库·mongodb·kingbase·数据库平替用金仓·金仓数据库·kingbasees·