成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring boot項目搭建(前端到數據庫,超詳細),大神勿進!

開發 項目管理
今天剛好我有空,于是,我就搞了一個從前端到后臺的用戶系統(demo)。用戶系統基本是所有項目中都必須有的基礎模塊,可大可小。

[[385395]]

前段時間,有很多小伙伴私下跟我說,想搞一個項目實戰。今天剛好我有空,于是,我就搞了一個從前端到后臺的用戶系統(demo)。用戶系統基本是所有項目中都必須有的基礎模塊,可大可小。大的需要很大一個團隊來維護,小的一個人兼職就能搞定。對于很多還未參與工作的同學來說,這個項目也可以練練手,說不定,第一份工作進去就是搞用戶模塊呢。

技術棧

Spring Boot 、Jpa 、Thymeleaf、HTML、Maven、MySQL。

對于技術棧,還不清楚的同學,自行查找相關資料,至少知道個大概是干啥的。

需求功能

現在需要對用戶信息進行新增、列表展示、用戶詳情展示、信息修改、信息刪除等功能。

用戶信息:姓名、密碼、手機號碼、年齡。

數據庫表

自己本地安裝MySQL,并創建數據庫,然后在創建一張用戶表。

建表語句

  1. CREATE TABLE `user` ( 
  2.   `uid` bigint NOT NULL AUTO_INCREMENT, 
  3.   `uname` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
  4.   `passwordvarchar(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
  5.   `tel` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
  6.   `age` int DEFAULT NULL
  7.   PRIMARY KEY (`uid`) 
  8. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; 

項目構建

項目整體目錄

接下來,我們就一步一步,把這些代碼理清楚。

整體項目采用的是

  1. html-->controller--->service--repository-->DB 

這也是當前實際開發中相對比較流行的,但為了演示,我這里就就用entity實體類就搞定了。

實際開發中會有其他什么O之類的,比如說:DTO/VO/BO.....。有的項目使用的是DTO,有的可能使用的是BO等。進入項目組了,按照項目組的開發規范來就行了,實在不理解的話,建議你先學會模仿別人是怎么做的。

廢話不多說,直接開干!

創建Spring Boot項目

可以使用spring官網給創建方式,地址:

https://start.spring.io/

這里也可以參考另外一篇文章:

如何快速構建Spring Boot基礎項目?

maven依賴

在項目的pom.xml中添加如下配置

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  4.     <modelVersion>4.0.0</modelVersion> 
  5.     <!-- Spring Boot 項目 --> 
  6.     <parent> 
  7.         <groupId>org.springframework.boot</groupId> 
  8.         <artifactId>spring-boot-starter-parent</artifactId> 
  9.         <version>2.1.6.RELEASE</version> 
  10.     </parent> 
  11.     <!-- 項目 maven 坐標 --> 
  12.     <groupId>com.tian.user</groupId> 
  13.     <artifactId>spring-boot-jpa-thymeleaf</artifactId> 
  14.     <version>1.0-SNAPSHOT</version> 
  15.     <!-- 項目名稱 --> 
  16.     <name>spring-boot-jpa-thymeleaf</name>   
  17.  
  18.     <dependencies> 
  19.         <!-- web --> 
  20.         <dependency> 
  21.             <groupId>org.springframework.boot</groupId> 
  22.             <artifactId>spring-boot-starter-web</artifactId> 
  23.         </dependency> 
  24.         <!-- thymeleaf --> 
  25.         <dependency> 
  26.             <groupId>org.springframework.boot</groupId> 
  27.             <artifactId>spring-boot-starter-thymeleaf</artifactId> 
  28.         </dependency> 
  29.         <!-- jpa --> 
  30.         <dependency> 
  31.             <groupId>org.springframework.boot</groupId> 
  32.             <artifactId>spring-boot-starter-data-jpa 
  33.             </artifactId> 
  34.         </dependency> 
  35.         <!-- MySQL --> 
  36.         <dependency> 
  37.             <groupId>mysql</groupId> 
  38.             <artifactId>mysql-connector-java</artifactId> 
  39.         </dependency> 
  40.     </dependencies> 
  41.  
  42.     <build> 
  43.         <plugins> 
  44.             <plugin> 
  45.                 <groupId>org.springframework.boot</groupId> 
  46.                 <artifactId>spring-boot-maven-plugin</artifactId> 
  47.                 <configuration> 
  48.                     <fork>true</fork> 
  49.                 </configuration> 
  50.             </plugin> 
  51.         </plugins> 
  52.     </build> 
  53. </project> 

 

 

 

 

 

主要是SpringBoot項目parent、web、MySQL、jpa、thymeleaf依賴,這樣就把相關的jar包給依賴進來了。

啟動類

 

  1. import org.springframework.boot.SpringApplication; 
  2. import org.springframework.boot.autoconfigure.SpringBootApplication; 
  3. import org.springframework.boot.builder.SpringApplicationBuilder; 
  4. import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 
  5.  
  6. /** 
  7.  * @author java 后端技術全棧 
  8.  * 就是一個簡單的啟動類 
  9.  */ 
  10. @SpringBootApplication 
  11. public class Application { 
  12.  
  13.     public static void main(String[] args) { 
  14.         SpringApplication.run(Application.class, args); 
  15.     }  

注意:此時數據庫相關信息沒有配置進項目里,所以,項目是啟動不了的。

集成MySQL數據庫

在resource目錄下,創建一個application.properties文件,加入以下內容:

  1. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 
  2. spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC 
  3. spring.datasource.username=root 
  4. spring.datasource.password=123456 

注意:如果MySQL是8.0版本,必須要配置服務時區,否則會啟動不了。

此時項目就可以正常啟動了。

集成 Jpa

在application.properties中添加

  1. spring.jpa.properties.hibernate.hbm2dl.auto=create 
  2. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 
  3. spring.jpa.show-sql=true 

創建一個UserRepository

  1. package com.tian.user.repository; 
  2.  
  3. import com.tian.user.entity.User
  4. import org.springframework.data.jpa.repository.JpaRepository; 
  5. import org.springframework.data.jpa.repository.Modifying; 
  6. import org.springframework.data.jpa.repository.Query; 
  7. import org.springframework.stereotype.Repository; 
  8.  
  9. @Repository 
  10. public interface UserRepository extends JpaRepository<User, Long> {  

這樣jpa就集成就來了。

集成Thymeleaf

前面我們已經把jar包給以來進來了,需要在application.properties中添加

  1. spring.thymeleaf.cache=false 
  2. spring.thymeleaf.prefix=classpath:/templates/ 
  3. spring.thymeleaf.mode=.html 
  4. spring.thymeleaf.encoding=UTF-8 
  5. spring.thymeleaf.content-type=text/html 

然后在resources目錄下添加兩個文件夾:

  • templates 前端頁面模板目錄
  • static 前端靜態資源目錄

新增用戶

在templates目錄下創建index.html

  1. <!DOCTYPE html> 
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org"
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <title>Index</title> 
  6.     <!-- 為了減少篇幅,樣式代碼這里就省略掉,樣式不是我們的重點內容 --> 
  7. </head> 
  8. <body> 
  9. <div id="content"
  10.     <form action="/save" method="post"
  11.         姓名:<input type="text" name="uname"><br/> 
  12.         年齡:<input type="text" name="age"><br/> 
  13.         密碼:<input type="text" name="password"><br/> 
  14.         手機號碼:<input type="text" name="tel"><br/> 
  15.         <button>新增</button> 
  16.     </form> 
  17. </div> 
  18. </body> 

 

 

 

 

 

創建UserService接口和UserServiceImpl實現類。

  1. public interface UserService { 
  2.     void add(User user); 
  3. @Service 
  4. public class UserServiceImpl implements UserService { 
  5.     @Resource 
  6.     private UserRepository userRepository; 
  7.     @Override 
  8.     public void add(User user) { 
  9.         userRepository.save(user); 
  10.     } 

創建UserController

  1. @Controller 
  2. public class UserController { 
  3.     @Resource 
  4.     private UserService userService; 
  5.  
  6.     @RequestMapping("/index"
  7.     public String add(Model model) { 
  8.         return "index"
  9.     } 
  10.  
  11.     @RequestMapping("/save"
  12.     public String save(Model model,User user) { 
  13.         userService.add(user); 
  14.         //跳轉到用戶列表 
  15.         return "redirect:/userList"
  16.     } 

這樣一個新增功能我們就做完了。這里我們順帶著把用戶列表也給搞出來。

用戶列表

在templates目錄下創建user_list.html頁面

  1. <!DOCTYPE html> 
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org"
  3. <head> 
  4.   <!-- 為了減少篇幅,樣式代碼這里就省略掉,樣式不是我們的重點內容 --> 
  5. </head> 
  6. <body> 
  7. <a href="/"
  8.     <div id="ret"
  9.         <button>新增用戶</button> 
  10.     </div> 
  11. </a> 
  12.     <table id="content" style="border: 1px solid;"
  13.         <tr> 
  14.             <th>姓名</th> 
  15.             <th>年齡</th> 
  16.             <th>手機號碼</th> 
  17.             <th>操作</th> 
  18.         </tr> 
  19.         <tr th:each="user:${users}"
  20.             <td th:text="${user.uname}"></td> 
  21.             <td th:text="${user.age}"></td> 
  22.             <td th:text="${user.tel}"></td> 
  23.             <td><a th:href="@{'/userInfo/'+${user.uid}}" target="_blank">用戶詳情</a> | 
  24.                 <a th:href="@{'/deleteById/'+${user.uid}}" target="_blank">刪除用戶信息</a> | 
  25.                 <a th:href="@{'/update/'+${user.uid}}" target="_blank">修改用戶信息</a> 
  26.             </td> 
  27.         </tr> 
  28.     </table
  29. </body> 
  30. </html> 

在service和實現類中添加用戶列表的方法,這里沒有做分頁。

  1. //UserService中添加 
  2. List<User> findAll(); 
  3. //UserServiceImpl中添加方法 
  4. @Override 
  5. public List<User> findAll() { 
  6.     return userRepository.findAll(); 

然后我們再在controller中添加一個方法用戶列表的方法。

  1. @RequestMapping("/userList"
  2. public String index(Model model) { 
  3.     List<User> users = userService.findAll(); 
  4.     model.addAttribute("users", users); 
  5.     return "user_list"

好了,自此用戶列表也搞定。下面我們來啟動項目,然后演示一下:

演示

新增流程的演示,訪問:

http://localhost:8080/

來到新增用戶頁面:

填入用戶信息

點擊新增,來到用戶列表:

用戶詳情

在templates目錄下創建user_info.html頁面:

  1. <!DOCTYPE html> 
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org"
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <title>用戶詳情</title> 
  6. </head> 
  7. <body> 
  8. <div id="content"
  9. 姓名:<input type="text" th:value="${user.uname}"><br/> 
  10. 年齡:<input type="text" th:value="${user.age}"><br/> 
  11. 密碼:<input type="text" th:value="${user.password}"><br/> 
  12. 手機號碼:<input type="text" th:value="${user.tel}"><br/> 
  13. </div> 
  14. </body> 
  15. </html> 

 

 

 

 

在service和實現類分別添加相應的方法。

  1. //UserService中添加方法 
  2. User findById(Long id); 
  3. //UserServiceImpl添加方法 
  4. @Override 
  5. public User findById(Long id) { 
  6.     return userRepository.getOne(id); 

然后在controller中添加方法

  1. @RequestMapping("/userInfo/{id}"
  2. public String userInfo(Model model, @PathVariable("id") Long id) { 
  3.     User user = userService.findById(id); 
  4.     model.addAttribute("user"user); 
  5.     return "user_info"

然后再次啟動項目,我們就直接可以從用戶列表中進入到用戶詳情里。

點擊:用戶詳情。

OK,到此,用戶詳情也就搞定了。剩下的我們繼續搞修改功能。

用戶信息修改

在templates目錄下創建update.html頁面。

  1. <!DOCTYPE html> 
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org"
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <title>Index</title> 
  6. </head> 
  7. <body> 
  8. <div id="content"
  9.     <form action="/updateById" method="post"
  10.         <input type="text" th:value="${user.uid}" name="uid"><br/> 
  11.         姓名:<input type="text" th:value="${user.uname}" name="uname"><br/> 
  12.         年齡:<input type="text" th:value="${user.age}" name="age"><br/> 
  13.         密碼:<input type="text" th:value="${user.password}" name="password"><br/> 
  14.         手機號碼:<input type="text" th:value="${user.tel}" name="tel"><br/> 
  15.         <button>修改</button> 
  16.     </form> 
  17. </div> 
  18. </body> 

 

 

 

 

 

UserRepository中添加更新方法:

  1. @Repository 
  2. public interface UserRepository extends JpaRepository<User, Long> { 
  3.  
  4.     @Modifying 
  5.     @Query("update User u set u.tel=?1 ,u.uname=?2 , u.password=?3 where  u.uid=?4"
  6.     void updateById(String tel, String uname, String password, Long uid); 

繼續在UserService和實現類中添加想要的方法。

  1. //UserService中添加方法 
  2. void update(User user); 
  3. //UserServiceImpl中添加方法 
  4. @Transactional 
  5. @Override 
  6. public void update(User user) { 
  7.     userRepository.updateById(user.getTel(), user.getUname(), user.getPassword(), user.getUid()); 

注意:UserServiceImpl添加的 這個update方法,必須要事務注解@Transactional,否則更新失敗。異常信息如下:

  1. javax.persistence.TransactionRequiredException: Executing an update/delete query 
  2.  at org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:398) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] 

加上事務注解@Transactional就搞定了。

然后在controller中添加方法

  1. @RequestMapping("/updateById"
  2. public String updateById(Model model,User user) { 
  3.     userService.update(user); 
  4.     return "redirect:/userList"
  5. //跳轉到修改頁面 
  6. @RequestMapping("/update/{id}"
  7. public String update(Model  model, @PathVariable("id") Long id) { 
  8.     User user = userService.findById(id); 
  9.     model.addAttribute("user"user); 
  10.     return "update"

再次啟動項目,繼續來到用戶列表頁面:

點擊:修改用戶信息,然后跳轉到用戶信息修改頁面:

這里我們把手機尾號修改成666:

點擊修改按鈕。跳轉到用戶列表頁面:

發現此時的用戶手機號已經修改完了。

到這里,我們已經做了用戶新增、單個用戶信息查詢、多個用戶信息查詢、單個用戶信息修改。剩下的刪除功能留給大家自己去做。相信大家也是很輕松的就能完成的。

總結

本文使用了技術棧:

Spring Boot +Jpa + Thyneleaf +MySQL+Maven+HTML

實戰演練一個用戶信息新增、查詢、修改。

注意點:

1、配置信息是一點要小心,不能有誤。

2、得自己安裝MySQL數據庫,然后創建數據庫,創建用戶表。

3、分層:html頁面、controller、service接口、service實現類、repository接口。

好了,一個簡單的用戶信息模塊就這樣了,刪除就靠你們自己去實現了。非常簡單的~,如有疑惑、問題的可以隨時聯系我。

「展望」

后面我們基于這個不斷擴大,比如:用戶信息刪除、用戶登錄、用戶注冊、權限、角色、集成Redis做緩存、使用Redis搞一個分布式鎖、用戶積分排行榜等待功能。

本文轉載自微信公眾號「Java后端技術全棧」,可以通過以下二維碼關注。轉載本文請聯系Java后端技術全棧公眾號。

 

責任編輯:武曉燕 來源: Java后端技術全棧
相關推薦

2019-04-02 10:36:17

數據庫MySQL優化方法

2023-02-28 00:01:53

MySQL數據庫工具

2019-08-01 07:31:51

數據庫主機日志

2018-10-10 09:30:29

Spring Boot知識框架

2019-11-05 14:20:02

Oracle分組函數數據庫

2019-10-22 07:50:45

SqlServer數據庫觸發器

2025-06-23 08:40:00

MySQL數據庫運維

2024-10-18 16:21:49

SpringPOM

2017-12-27 15:16:35

Spring BootFlyway數據庫

2019-09-10 07:58:01

字符集MySQL數據庫

2019-09-11 11:38:30

MySQLInnoDB數據庫

2019-06-18 10:31:23

數據庫端口URL

2019-08-20 09:46:14

DBA收藏腳本語言

2023-04-28 15:15:39

數據庫JPA

2025-06-04 02:15:00

數據庫連接方式JDBC

2019-08-20 22:06:32

Oracle數據庫索引

2021-03-09 17:11:09

數據庫腳手架開發

2011-05-26 13:29:30

ORACLE數據庫升級

2020-10-16 06:57:46

UnixLinux命令操作系統

2021-06-01 08:00:43

KubernetesCentOS版集群
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区大片 | 综合久久99| 国产黄色网址在线观看 | 久久久久久国产精品 | 日韩精品一二三 | 欧美精品二区 | 91精品国产色综合久久不卡98 | 亚洲成人精 | 可以免费看的毛片 | 亚洲国产高清在线 | 国产精品久久久久久久久免费樱桃 | 黑人巨大精品 | 精品在线一区 | 国产精品爱久久久久久久 | 亚洲情综合五月天 | 国产精品不卡 | 日韩视频免费看 | 精品一二区| 欧美女优在线观看 | 亚洲成人自拍 | 中文字幕一区二区三区精彩视频 | 一区二区免费在线 | 一本一道久久a久久精品综合 | 一区二区国产在线观看 | 午夜a级理论片915影院 | 婷婷桃色网 | 国产农村妇女精品一区 | av黄色在线 | 久久久久久久久国产成人免费 | 久久久久久国产精品免费免费男同 | 91视频在线看 | 男人的天堂一级片 | 国产99热 | 日韩国产中文字幕 | 亚洲视频在线播放 | 亚洲欧洲小视频 | 九九视频在线观看视频6 | 精品在线看| 国产精品明星裸体写真集 | 久久久欧洲 | 亚洲区一区二区 |