日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Springboot項(xiàng)目搭建(前端到數(shù)據(jù)庫(kù),超詳細(xì)),大神勿進(jìn)!

前段時(shí)間,有很多小伙伴私下跟我說,想搞一個(gè)項(xiàng)目實(shí)戰(zhàn)。今天剛好我有空,于是,我就搞了一個(gè)從前端到后臺(tái)的用戶系統(tǒng)(demo)。用戶系統(tǒng)基本是所有項(xiàng)目中都必須有的基礎(chǔ)模塊,可大可小。大的需要很大一個(gè)團(tuán)隊(duì)來維護(hù),小的一個(gè)人兼職就能搞定。對(duì)于很多還未參與工作的同學(xué)來說,這個(gè)項(xiàng)目也可以練練手,說不定,第一份工作進(jìn)去就是搞用戶模塊呢。

技術(shù)棧

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

對(duì)于技術(shù)棧,還不清楚的同學(xué),自行查找相關(guān)資料,至少知道個(gè)大概是干啥的。

需求功能

現(xiàn)在需要對(duì)用戶信息進(jìn)行新增、列表展示、用戶詳情展示、信息修改、信息刪除等功能。

用戶信息:姓名、密碼、手機(jī)號(hào)碼、年齡。

數(shù)據(jù)庫(kù)表

自己本地安裝MySQL,并創(chuàng)建數(shù)據(jù)庫(kù),然后在創(chuàng)建一張用戶表。

建表語(yǔ)句

 
 
 
 
  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.   `password` varchar(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; 

項(xiàng)目構(gòu)建

項(xiàng)目整體目錄

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

整體項(xiàng)目采用的是

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

這也是當(dāng)前實(shí)際開發(fā)中相對(duì)比較流行的,但為了演示,我這里就就用entity實(shí)體類就搞定了。

實(shí)際開發(fā)中會(huì)有其他什么O之類的,比如說:DTO/VO/BO.....。有的項(xiàng)目使用的是DTO,有的可能使用的是BO等。進(jìn)入項(xiàng)目組了,按照項(xiàng)目組的開發(fā)規(guī)范來就行了,實(shí)在不理解的話,建議你先學(xué)會(huì)模仿別人是怎么做的。

廢話不多說,直接開干!

創(chuàng)建Spring Boot項(xiàng)目

可以使用spring官網(wǎng)給創(chuàng)建方式,地址:

https://start.spring.io/

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

如何快速構(gòu)建Spring Boot基礎(chǔ)項(xiàng)目?

maven依賴

在項(xiàng)目的pom.xml中添加如下配置

 
 
 
 
  1.  
  2.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
  3.     4.0.0 
  4.      
  5.      
  6.         org.springframework.boot 
  7.         spring-boot-starter-parent 
  8.         2.1.6.RELEASE 
  9.      
  10.      
  11.     com.tian.user 
  12.     spring-boot-jpa-thymeleaf 
  13.     1.0-SNAPSHOT 
  14.      
  15.     spring-boot-jpa-thymeleaf   
  16.  
  17.      
  18.          
  19.          
  20.             org.springframework.boot 
  21.             spring-boot-starter-web 
  22.          
  23.          
  24.          
  25.             org.springframework.boot 
  26.             spring-boot-starter-thymeleaf 
  27.          
  28.          
  29.          
  30.             org.springframework.boot 
  31.             spring-boot-starter-data-jpa 
  32.              
  33.          
  34.          
  35.          
  36.             mysql 
  37.             mysql-connector-java 
  38.          
  39.      
  40.  
  41.      
  42.          
  43.              
  44.                 org.springframework.boot 
  45.                 spring-boot-maven-plugin 
  46.                  
  47.                     true 
  48.                  
  49.              
  50.          
  51.      
  52.  

 

主要是SpringBoot項(xiàng)目parent、web、MySQL、jpa、thymeleaf依賴,這樣就把相關(guān)的jar包給依賴進(jìn)來了。

啟動(dòng)類

 
 
 
 
  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 后端技術(shù)全棧 
  8.  * 就是一個(gè)簡(jiǎn)單的啟動(dòng)類 
  9.  */ 
  10. @SpringBootApplication 
  11. public class Application { 
  12.  
  13.     public static void main(String[] args) { 
  14.         SpringApplication.run(Application.class, args); 
  15.     }  

注意:此時(shí)數(shù)據(jù)庫(kù)相關(guān)信息沒有配置進(jìn)項(xiàng)目里,所以,項(xiàng)目是啟動(dòng)不了的。

集成MySQL數(shù)據(jù)庫(kù)

在resource目錄下,創(chuàng)建一個(gè)application.properties文件,加入以下內(nèi)容:

 
 
 
 
  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版本,必須要配置服務(wù)時(shí)區(qū),否則會(huì)啟動(dòng)不了。

此時(shí)項(xiàng)目就可以正常啟動(dòng)了。

集成 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 

創(chuàng)建一個(gè)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 {  

這樣jpa就集成就來了。

集成Thymeleaf

前面我們已經(jīng)把jar包給以來進(jìn)來了,需要在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目錄下添加兩個(gè)文件夾:

  • templates 前端頁(yè)面模板目錄
  • static 前端靜態(tài)資源目錄

新增用戶

在templates目錄下創(chuàng)建index.html

   
 
 
 
  1.  
  2.  
  3.  
  4.      
  5.     Index 
  6.      
  7.  
  8.  
  9.  
  10.      
  11.         姓名:
     
  12.         年齡:
     
  13.         密碼:
     
  14.         手機(jī)號(hào)碼:
     
  15.          
  16.      
 
  •  
  •  

    創(chuàng)建UserService接口和UserServiceImpl實(shí)現(xiàn)類。

     
     
     
     
    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.     } 

    創(chuàng)建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.         //跳轉(zhuǎn)到用戶列表 
    15.         return "redirect:/userList"; 
    16.     } 

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

    用戶列表

    在templates目錄下創(chuàng)建user_list.html頁(yè)面

     
     
     
     
    1.  
    2.  
    3.  
    4.    
    5.  
    6.  
    7.  
    8.      
    9.          
    10.     
     
  •  
  •      
  •          
  •             姓名 
  •             年齡 
  •             手機(jī)號(hào)碼 
  •             操作 
  •          
  •          
  •              
  •              
  •              
  •             用戶詳情 | 
  •                 刪除用戶信息 | 
  •                 修改用戶信息 
  •              
  •          
  •      
  •  
  •  
  • 在service和實(shí)現(xiàn)類中添加用戶列表的方法,這里沒有做分頁(yè)。

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

    然后我們?cè)僭赾ontroller中添加一個(gè)方法用戶列表的方法。

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

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

    演示

    新增流程的演示,訪問:

    http://localhost:8080/

    來到新增用戶頁(yè)面:

    填入用戶信息

    點(diǎn)擊新增,來到用戶列表:

    用戶詳情

    在templates目錄下創(chuàng)建user_info.html頁(yè)面:

     
     
     
     
    1.  
    2.  
    3.  
    4.      
    5.     用戶詳情 
    6.  
    7.  
    8.  
    9. 姓名:
       
    10. 年齡:
       
    11. 密碼:
       
    12. 手機(jī)號(hào)碼:
       
     
  •  
  •  
  •  

    在service和實(shí)現(xiàn)類分別添加相應(yīng)的方法。

     
     
     
     
    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"; 

    然后再次啟動(dòng)項(xiàng)目,我們就直接可以從用戶列表中進(jìn)入到用戶詳情里。

    點(diǎn)擊:用戶詳情。

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

    用戶信息修改

    在templates目錄下創(chuàng)建update.html頁(yè)面。

     
     
     
     
    1.  
    2.  
    3.  
    4.      
    5.     Index 
    6.  
    7.  
    8.  
    9.      
    10.         
       
    11.         姓名:
       
    12.         年齡:
       
    13.         密碼:
       
    14.         手機(jī)號(hào)碼:
       
    15.          
    16.      
     
  •  
  •  

    UserRepository中添加更新方法:

     
     
     
     
    1. @Repository 
    2. public interface UserRepository extends JpaRepository { 
    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); 

    繼續(xù)在UserService和實(shí)現(xiàn)類中添加想要的方法。

     
     
     
     
    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添加的 這個(gè)update方法,必須要事務(wù)注解@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] 

    加上事務(wù)注解@Transactional就搞定了。

    然后在controller中添加方法

     
     
     
     
    1. @RequestMapping("/updateById") 
    2. public String updateById(Model model,User user) { 
    3.     userService.update(user); 
    4.     return "redirect:/userList"; 
    5. //跳轉(zhuǎn)到修改頁(yè)面 
    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"; 

    再次啟動(dòng)項(xiàng)目,繼續(xù)來到用戶列表頁(yè)面:

    點(diǎn)擊:修改用戶信息,然后跳轉(zhuǎn)到用戶信息修改頁(yè)面:

    這里我們把手機(jī)尾號(hào)修改成666:

    點(diǎn)擊修改按鈕。跳轉(zhuǎn)到用戶列表頁(yè)面:

    發(fā)現(xiàn)此時(shí)的用戶手機(jī)號(hào)已經(jīng)修改完了。

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

    總結(jié)

    本文使用了技術(shù)棧:

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

    實(shí)戰(zhàn)演練一個(gè)用戶信息新增、查詢、修改。

    注意點(diǎn):

    1、配置信息是一點(diǎn)要小心,不能有誤。

    2、得自己安裝MySQL數(shù)據(jù)庫(kù),然后創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建用戶表。

    3、分層:html頁(yè)面、controller、service接口、service實(shí)現(xiàn)類、repository接口。

    好了,一個(gè)簡(jiǎn)單的用戶信息模塊就這樣了,刪除就靠你們自己去實(shí)現(xiàn)了。非常簡(jiǎn)單的~,如有疑惑、問題的可以隨時(shí)聯(lián)系我。

    「展望」

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

    本文轉(zhuǎn)載自微信公眾號(hào)「Java后端技術(shù)全?!?,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java后端技術(shù)全棧公眾號(hào)。


    名稱欄目:Springboot項(xiàng)目搭建(前端到數(shù)據(jù)庫(kù),超詳細(xì)),大神勿進(jìn)!
    新聞來源:http://www.dlmjj.cn/article/cccgejc.html