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

莱莱  论坛元老 | 2024-9-27 01:51:33 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1032|帖子 1032|积分 3096

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在Java Web开发中,JPA(Java Persistence API)和Thymeleaf是非常流行的技术组合,分别用于数据持久化和前端模板渲染。下面我将指导你如何使用Spring Boot框架结合JPA和Thymeleaf来实现一个根本的增删改查(CRUD)应用。

1. 搭建项目基础

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



  • 选择项目类型:Maven Project
  • 选择Spring Boot版本:选择最新的稳定版本
  • 添加依赖:Spring Web, Spring Data JPA, Thymeleaf, H2 Database(作为示例数据库)
2. 设置数据库

在src/main/resources/application.properties中设置数据库毗连和JPA相干属性:

  1. spring.datasource.url=jdbc:h2:mem:testdb  
  2. spring.datasource.driverClassName=org.h2.Driver  
  3. spring.datasource.username=sa  
  4. spring.datasource.password=password  
  5. spring.jpa.database-platform=org.hibernate.dialect.H2Dialect  
  6. spring.h2.console.enabled=true  
  7. spring.jpa.show-sql=true  
  8. spring.jpa.hibernate.ddl-auto=update
复制代码
3. 创建实体类

以Person为例,创建一个实体类:

  1. import javax.persistence.Entity;  
  2. import javax.persistence.GeneratedValue;  
  3. import javax.persistence.GenerationType;  
  4. import javax.persistence.Id;  
  5.   
  6. @Entity  
  7. public class Person {  
  8.   
  9.     @Id  
  10.     @GeneratedValue(strategy = GenerationType.IDENTITY)  
  11.     private Long id;  
  12.     private String name;  
  13.     private int age;  
  14.   
  15.     // 构造方法、getter和setter省略  
  16. }
复制代码
4. 创建Repository

创建一个JPA Repository来访问数据库:

  1. import org.springframework.data.jpa.repository.JpaRepository;  
  2.   
  3. public interface PersonRepository extends JpaRepository<Person, Long> {  
  4. }
复制代码
5. 创建Controller

创建Controller来处理HTTP哀求:

  1. import org.springframework.beans.factory.annotation.Autowired;  
  2. import org.springframework.stereotype.Controller;  
  3. import org.springframework.ui.Model;  
  4. import org.springframework.web.bind.annotation.*;  
  5.   
  6. @Controller  
  7. public class PersonController {  
  8.   
  9.     @Autowired  
  10.     private PersonRepository personRepository;  
  11.   
  12.     // 列表页  
  13.     @GetMapping("/persons")  
  14.     public String listPersons(Model model) {  
  15.         model.addAttribute("persons", personRepository.findAll());  
  16.         return "persons";  
  17.     }  
  18.   
  19.     // 新增页面  
  20.     @GetMapping("/persons/new")  
  21.     public String newPerson(Model model) {  
  22.         model.addAttribute("person", new Person());  
  23.         return "person_form";  
  24.     }  
  25.   
  26.     // 保存  
  27.     @PostMapping("/persons")  
  28.     public String savePerson(@ModelAttribute Person person) {  
  29.         personRepository.save(person);  
  30.         return "redirect:/persons";  
  31.     }  
  32.   
  33.     // 编辑页面  
  34.     @GetMapping("/persons/{id}/edit")  
  35.     public String editPerson(@PathVariable Long id, Model model) {  
  36.         Person person = personRepository.findById(id).orElse(null);  
  37.         if (person != null) {  
  38.             model.addAttribute("person", person);  
  39.             return "person_form";  
  40.         }  
  41.         return "redirect:/persons";  
  42.     }  
  43.   
  44.     // 删除  
  45.     @GetMapping("/persons/{id}/delete")  
  46.     public String deletePerson(@PathVariable Long id) {  
  47.         personRepository.deleteById(id);  
  48.         return "redirect:/persons";  
  49.     }  
  50. }
复制代码
6. 创建Thymeleaf模板



  • persons.html(列表页)
  • person_form.html(新增和编辑页)
在src/main/resources/templates目次下创建这些HTML文件,并使用Thymeleaf语法来渲染数据。

7. 运行和测试

运行Spring Boot应用,并通过欣赏器访问http://localhost:8080/persons来查看列表页面,你可以实验添加、编辑和删除记录来测试功能。

8. 附加提示



  • 确保你的HTML表单和Controller中的方法精确匹配(尤其是POST哀求的方法名)。
  • 使用Spring Security来掩护你的应用,制止未授权访问。
  • 在生产情况中使用更安全的数据库设置,如使用毗连池和设置加密的数据库毗连。
通过以上步骤,你应该能够创建一个根本的Spring Boot应用,该应用使用JPA进行数据持久化,并使用Thymeleaf作为前端模板引擎来展示数据。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表