当前位置: 首页 > news >正文

门业东莞网站建设技术支持北京网站优化公司

门业东莞网站建设技术支持,北京网站优化公司,网络推广公司开业广告,台州网站建设系统SpringBootJpaThymeleaf实现增删改查 这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例。 1、pom依赖 pom 包里面添加Jpa 和 Thymeleaf 的相关包引用 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.…

SpringBoot+Jpa+Thymeleaf实现增删改查

这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例。

1、pom依赖

pom 包里面添加JpaThymeleaf 的相关包引用

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version></parent><groupId>com.example</groupId><artifactId>spring-boot-jpa-thymeleaf-curd</artifactId><version>0.0.1-SNAPSHOT</version><name>spring-boot-jpa-thymeleaf-curd</name><description>spring-boot-jpa-thymeleaf-curd</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork></configuration></plugin></plugins></build></project>

2、application.properties中添加配置

spring.datasource.url=jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true
spring.thymeleaf.cache=false

其中propertiesspring.thymeleaf.cache=false是关闭 Thymeleaf 的缓存,不然在开发过程中修改页面不会

立刻生效需要重启,生产可配置为 true。

在项目 resources 目录下会有两个文件夹:static目录用于放置网站的静态内容如 cssjs图片

templates 目录用于放置项目使用的页面模板。

3、启动类

启动类需要添加 Servlet 的支持

package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;@SpringBootApplication
public class Application extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(Application.class);}public static void main(String[] args) throws Exception {SpringApplication.run(Application.class, args);}
}

4、数据库层代码

实体类映射数据库表

package com.example.model;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;@Entity
public class User {@Id@GeneratedValueprivate long id;@Column(nullable = false, unique = true)private String userName;@Column(nullable = false)private String password;@Column(nullable = false)private int age;public long getId() {return id;}public User setId(long id) {this.id = id;return this;}public String getUserName() {return userName;}public User setUserName(String userName) {this.userName = userName;return this;}public String getPassword() {return password;}public User setPassword(String password) {this.password = password;return this;}public int getAge() {return age;}public User setAge(int age) {this.age = age;return this;}
}

5、 JpaRepository

package com.example.repository;import com.example.model.User;
import org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends JpaRepository<User, Long> {User findById(long id);void deleteById(Long id);
}

继承 JpaRepository 类会自动实现很多内置的方法,包括增删改查,也可以根据方法名来自动生成相关 Sql。

6、业务层处理

Service 调用 Jpa 实现相关的增删改查,实际项目中 Service 层处理具体的业务代码。

package com.example.service;import com.example.model.User;import java.util.List;public interface UserService {public List<User> getUserList();public User findUserById(long id);public void save(User user);public void edit(User user);public void delete(long id);}
package com.example.service.impl;import com.example.model.User;
import com.example.repository.UserRepository;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserRepository userRepository;@Overridepublic List<User> getUserList() {return userRepository.findAll();}@Overridepublic User findUserById(long id) {return userRepository.findById(id);}@Overridepublic void save(User user) {userRepository.save(user);}@Overridepublic void edit(User user) {userRepository.save(user);}@Overridepublic void delete(long id) {userRepository.deleteById(id);}
}

7、控制层

package com.example.web;import com.example.model.User;
import com.example.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import javax.annotation.Resource;
import java.util.List;@Controller
public class UserController {@ResourceUserService userService;@RequestMapping("/")public String index() {return "redirect:/list";}@RequestMapping("/list")public String list(Model model) {List<User> users = userService.getUserList();model.addAttribute("users", users);return "user/list";}@RequestMapping("/toAdd")public String toAdd() {return "user/userAdd";}@RequestMapping("/add")public String add(User user) {userService.save(user);return "redirect:/list";}@RequestMapping("/toEdit")public String toEdit(Model model, Long id) {User user = userService.findUserById(id);model.addAttribute("user", user);return "user/userEdit";}@RequestMapping("/edit")public String edit(User user) {userService.edit(user);return "redirect:/list";}@RequestMapping("/delete")public String delete(Long id) {userService.delete(id);return "redirect:/list";}
}

Controller 负责接收请求,处理完后将页面内容返回给前端。

  • return "user/userEdit"; 代表会直接去 resources 目录下找相关的文件。

  • return "redirect:/list"; 代表转发到对应的 Controller,这个示例就相当于删除内容之后自动调整到

    list 请求,然后再输出到页面。

8、页面内容

list 列表 list.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"/><title>userList</title><link rel="stylesheet" th:href="@{/css/bootstrap.css}"></link>
</head>
<body class="container">
<br/>
<h1>用户列表</h1>
<br/><br/>
<div class="with:80%"><table class="table table-hover"><thead><tr><th>#</th><th>User Name</th><th>Password</th><th>Age</th><th>Edit</th><th>Delete</th></tr></thead><tbody><tr  th:each="user : ${users}"><th scope="row" th:text="${user.id}">1</th><td th:text="${user.userName}">neo</td><td th:text="${user.password}">Otto</td><td th:text="${user.age}">6</td><td><a th:href="@{/toEdit(id=${user.id})}">edit</a></td><td><a th:href="@{/delete(id=${user.id})}">delete</a></td></tr></tbody></table>
</div>
<div class="form-group"><div class="col-sm-2 control-label"><a href="/toAdd" th:href="@{/toAdd}" class="btn btn-info">add</a></div>
</div></body>
</html>

访问http://localhost:8080/,效果如下图所示:
在这里插入图片描述

<tr th:each="user : ${users}"> 这里会从 Controler 层 model set 的对象去获取相关的内容,th:each

示会循环遍历对象内容。

点击Add按钮会跳转到新增页面。

新增页面 userAdd.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"/><title>user</title><link rel="stylesheet" th:href="@{/css/bootstrap.css}"></link>
</head>
<body class="container">
<br/>
<h1>添加用户</h1>
<br/><br/>
<div class="with:80%"><form class="form-horizontal"   th:action="@{/add}"  method="post"><div class="form-group"><label for="userName" class="col-sm-2 control-label">userName</label><div class="col-sm-10"><input type="text" class="form-control" name="userName"  id="userName" placeholder="userName"/></div></div><div class="form-group"><label for="password" class="col-sm-2 control-label" >Password</label><div class="col-sm-10"><input type="password" class="form-control" name="password" id="password" placeholder="Password"/></div></div><div class="form-group"><label for="age" class="col-sm-2 control-label">age</label><div class="col-sm-10"><input type="text" class="form-control" name="age"  id="age" placeholder="age"/></div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><input type="submit" value="Submit" class="btn btn-info" />&nbsp; &nbsp; &nbsp;<input type="reset" value="Reset" class="btn btn-info" /></div></div></form>
</div>
</body>
</html>

在这里插入图片描述

填写数据并且点击Submit按钮,用户添加成功并且跳转到用户列表页面。

在这里插入图片描述

点击edit按钮跳转到用户修改页面。

修改页面 userEdit.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"/><title>user</title><link rel="stylesheet" th:href="@{/css/bootstrap.css}"></link>
</head>
<body class="container">
<br/>
<h1>修改用户</h1>
<br/><br/>
<div class="with:80%"><form class="form-horizontal"   th:action="@{/edit}" th:object="${user}"  method="post"><input type="hidden" name="id" th:value="*{id}" /><div class="form-group"><label for="userName" class="col-sm-2 control-label">userName</label><div class="col-sm-10"><input type="text" class="form-control" name="userName"  id="userName" th:value="*{userName}" placeholder="userName"/></div></div><div class="form-group"><label for="password" class="col-sm-2 control-label" >Password</label><div class="col-sm-10"><input type="password" class="form-control" name="password" id="password"  th:value="*{password}" placeholder="Password"/></div></div><div class="form-group"><label for="age" class="col-sm-2 control-label">age</label><div class="col-sm-10"><input type="text" class="form-control" name="age"  id="age" th:value="*{age}" placeholder="age"/></div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><input type="submit" value="Submit" class="btn btn-info" />&nbsp; &nbsp; &nbsp;<a href="/toAdd" th:href="@{/list}" class="btn btn-info">Back</a></div></div></form>
</div>
</body>
</html>

在这里插入图片描述

修改用户的年龄为100然后点击Submit按钮提交修改。

然后跳转到用户列表页面发现数据修改了。

在这里插入图片描述

可以点击delete按钮删除用户。

删除之后跳转到用户列表页面。

在这里插入图片描述

这样一个使用 Jpa 和 Thymeleaf 的增删改查示例就完成了。

http://www.khdw.cn/news/4949.html

相关文章:

  • 外包公司做的网站怎么改密码国产最好的a级suv
  • 西安英文网站建设网站维护中是什么意思
  • 桂林网站建设培训seo优化方案总结
  • 西安建站免费模板网站推广策划书模板
  • 网站切片怎么做网站访问量排行榜
  • 做网站教程如乐网站每天做100个外链
  • 致力于邯郸网站建设制作服务_使众多客户将网站转化为网络市场营销.seo关键词
  • 给公司做网站需要华多少钱站内推广有哪些具体方式
  • 温州网站开发培训怎样做企业推广
  • 聊城做手机网站建设成都网站优化排名推广
  • 网站我优化外贸如何做网站推广
  • 做网站用商标吗淘宝推广怎么推
  • 顺德网站建设报价高手优化网站
  • 网络架构oss自媒体seo是什么意思
  • 注册网站步骤哪个杭州seo好
  • 网站开发质量屋上海网络推广服务
  • 网站建设公司外链怎么做广州30万人感染
  • 机器设备行业网站模板教育培训机构排名前十
  • 用pyton可以做网站吗上海百度推广公司
  • 工信部备案网站查推广app赚钱项目
  • 服务企业做优化的网站
  • 建设电子商务网站论文seo怎么收费
  • 设计建设网站公司网站seo实战培训班
  • 爱用建站正规吗搜索引擎推广文案
  • phpcms电影网站开发南宁seo外包要求
  • 有没有教给做宝宝衣服的网站大连网站建设
  • 网站可信认证在哪里做短视频推广平台
  • 海外代购正品网站推广图片大全
  • 企业自建b2b电子商务网站有哪些优化排名软件
  • dede网站301怎么做网站优化