如何搭建一個WEB服務器項目(二)—— 對數據庫表進行基本的增刪改查操作


使用HibernateTemplate進行增刪改查操作

  觀前提示:本系列文章有關服務器以及后端程序這些概念,我寫的全是自己的理解,並不一定正確,希望不要誤人子弟。歡迎各位大佬來評論區提出問題或者是指出錯誤,分享寶貴經驗。先謝謝了( ̄▽ ̄)"!

  這次的廢話留在文章末尾吧,斷更了好久,直接進入正題!

  • 本篇中主要用到的代碼我都會在文章里貼出來

    如果博主玩明白GitHub了的話,源碼會上傳到Github,貼出鏈接方便各位使用。不過我覺得各位還是找更有參考價值的文章吧,這個系列純粹是我一個人寫日記( ̄_ ̄),沒有太多參考價值

  • 本篇中提到的上篇如無特別說明,均指本系列的第一篇

    如何搭建一個WEB服務器項目(一)—— 開篇 ,搭建SSH整合框架

  項目文檔結構目錄如下(覺得不理解的同學可以看一下上篇文章,里面有教程的鏈接):

  

  

首先簡單介紹一下HibernateTemplate的作用以及用法:

  • HibernateTemplate的作用:

  我簡單整理了網上的說法,大概如下:

  從字面上意思我們就知道它是一個模板,然后我們又知道hibernate是一個對象關系映射的框架,所以我們很容易聯想到他的功能就是將Hibernate的持久層訪問模板化。或者我們直接叫他為hibernate的持久化模板。HibernateTemplate 提供了非常多的常用方法來完成基本的操作,比如增加、刪除、修改及查詢等操作,Spring 2.0 更增加對命名 SQL 查詢的支持,也增加對分頁的支持。大部分情況下,使用Hibernate 的常規用法,就可完成大多數DAO對象的 CRUD操作。其更多特性請各位自行百度,根據需求去了解,我也不再贅述。

  • HibernateTemplate的用法:

  本篇是基於注解的聲明式事務控制,在Tomcat啟動的時候由 Tomcat 加載 ApplicationContext.xml,配置文件給 hibernateTemplate賦值,這樣的話就實現了,在使用某個對象之前不用給他實例化(配置文件的內容詳情見上篇教程鏈接

   該說的也都說了,我們來看看具體的代碼實現,就以新增一條記錄為例:

  • UserEntity(用戶實體類)
  1 package dolphin.entity;
  2 
  3 import javax.persistence.*;
  4 
  5 @Entity
  6 @Table(name = "user", schema = "hibernate", catalog = "")
  7 public class UserEntity {
  8     private int userId;
  9     private String userName;
 10     private String userKey;
 11     private String userScore;
 12     private String userGrade;
 13     private String isVip;
 14     private String headImage;
 15 
 16     @Id
 17     @GeneratedValue(strategy=GenerationType.IDENTITY)
 18     @Column(name = "user_id")
 19     public int getUserId() {
 20         return userId;
 21     }
 22 
 23     public void setUserId(int userId) {
 24         this.userId = userId;
 25     }
 26 
 27     @Basic
 28     @Column(name = "user_name")
 29     public String getUserName() {
 30         return userName;
 31     }
 32 
 33     public void setUserName(String userName) {
 34         this.userName = userName;
 35     }
 36 
 37     @Basic
 38     @Column(name = "user_key")
 39     public String getUserKey() {
 40         return userKey;
 41     }
 42 
 43     public void setUserKey(String userKey) {
 44         this.userKey = userKey;
 45     }
 46 
 47     @Basic
 48     @Column(name = "user_score")
 49     public String getUserScore() {
 50         return userScore;
 51     }
 52 
 53     public void setUserScore(String userScore) {
 54         this.userScore = userScore;
 55     }
 56 
 57     @Basic
 58     @Column(name = "user_grade")
 59     public String getUserGrade() {
 60         return userGrade;
 61     }
 62 
 63     public void setUserGrade(String userGrade) {
 64         this.userGrade = userGrade;
 65     }
 66 
 67     @Basic
 68     @Column(name = "is_vip")
 69     public String getIsVip() {
 70         return isVip;
 71     }
 72 
 73     public void setIsVip(String isVip) {
 74         this.isVip = isVip;
 75     }
 76 
 77     @Basic
 78     @Column(name = "head_image")
 79     public String getHeadImage() {
 80         return headImage;
 81     }
 82 
 83     public void setHeadImage(String headImage) {
 84         this.headImage = headImage;
 85     }
 86 
 87     @Override
 88     public boolean equals(Object o) {
 89         if (this == o) return true;
 90         if (o == null || getClass() != o.getClass()) return false;
 91 
 92         UserEntity that = (UserEntity) o;
 93 
 94         if (userId != that.userId) return false;
 95         if (userName != null ? !userName.equals(that.userName) : that.userName != null) return false;
 96         if (userKey != null ? !userKey.equals(that.userKey) : that.userKey != null) return false;
 97         if (userScore != null ? !userScore.equals(that.userScore) : that.userScore != null) return false;
 98         if (userGrade != null ? !userGrade.equals(that.userGrade) : that.userGrade != null) return false;
 99         if (isVip != null ? !isVip.equals(that.isVip) : that.isVip != null) return false;
100         if (headImage != null ? !headImage.equals(that.headImage) : that.headImage != null) return false;
101 
102         return true;
103     }
104 
105     @Override
106     public int hashCode() {
107         int result = userId;
108         result = 31 * result + (userName != null ? userName.hashCode() : 0);
109         result = 31 * result + (userKey != null ? userKey.hashCode() : 0);
110         result = 31 * result + (userScore != null ? userScore.hashCode() : 0);
111         result = 31 * result + (userGrade != null ? userGrade.hashCode() : 0);
112         result = 31 * result + (isVip != null ? isVip.hashCode() : 0);
113         result = 31 * result + (headImage != null ? headImage.hashCode() : 0);
114         return result;
115     }
116 }
UserEntity.java
  • UserService(用戶服務層接口)
 1 package dolphin.service;
 2 
 3 import dolphin.entity.UserEntity;
 4 
 5 import java.util.List;
 6 
 7 /**
 8  * @Description :UserService
 9  * @author :郭小柒w
10  * @date :2020/3/26 12:21
11  */
12 public interface UserService {
13     /**
14      * @Description :驗證登陸身份
15      * @return :boolean
16     **/
17     boolean isLoginOk(String username, String password);
18     /**
19      * @Description :查詢所有用戶信息
20      * @return :java.util.List<dolphin.entity.UserEntity>
21     **/
22     List<UserEntity> getAll();
23     /**
24      * @Description :添加用戶信息
25      * @return :void
26      */
27     void add(UserEntity user);
28     /**
29      * @Description :更新用戶信息
30      * @return :void
31     */
32     void update(UserEntity user);
33     /**
34      * @Description :刪除用戶信息
35      * @return :void
36     */
37     void delete(UserEntity user);
38     /**
39      * @Description :根據id查詢用戶
40      * @return :java.lang.Object
41     **/
42     UserEntity getUserById(int id);
43 }
UserService.java
  • UserServiceImpl(用戶服務層實現類)
 1 package dolphin.service.impl;
 2 
 3 import dolphin.dao.UserDao;
 4 import dolphin.entity.UserEntity;
 5 import dolphin.service.UserService;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Service;
 8 import org.springframework.transaction.annotation.Transactional;
 9 
10 import javax.annotation.Resource;
11 import java.util.List;
12 
13 /**
14  * @Description :UserServiceImpl
15  * @author :郭小柒w
16  * @date :2020/3/26 12:20
17  */
18 @Transactional
19 @Service("UserServiceImpl")
20 public class UserServiceImpl implements UserService {
21 
22     @Autowired
23     @Resource
24     private UserDao userDao;
25 
26     public UserDao getTestmapper() {
27         return userDao;
28     }
29 
30     public void setTestmapper(UserDao mapper) {
31         this.userDao = mapper;
32     }
33 
34     @Override
35     public boolean isLoginOk(String name,String key){
36         return userDao.isLoginOk(name, key);
37     }
38 
39     @Override
40     public List<UserEntity> getAll() {
41         return userDao.getAll();
42     }
43 
44     @Override
45     public void add(UserEntity user) { userDao.add(user); }
46 
47     @Override
48     public void update(UserEntity user) {
49         userDao.update(user);
50     }
51 
52     @Override
53     public void delete(UserEntity user) {
54         userDao.delete(user);
55     }
56 
57     @Override
58     public UserEntity getUserById(int id) {
59         return userDao.getUserById(id);
60     }
61 }
UserServiceImpl.java
  • UserDao(用戶DAO層接口)
 1 package dolphin.dao;
 2 
 3 import dolphin.entity.UserEntity;
 4 
 5 import java.util.List;
 6 
 7 /**
 8  * @description :映射類接口
 9  * @author :郭小柒w
10  * @date :2020/3/26 13:36
11  * @version :1.0
12  */
13 public interface UserDao {
14     /**
15      * @Description :驗證登陸身份
16      * @return :boolean
17     **/
18     boolean isLoginOk(String username,String password);
19     /**
20      * @Description :查詢所有用戶信息
21      * @return :java.util.List
22     **/
23     List getAll();
24     /**
25      * @Description :添加用戶信息
26      * @return :void
27     **/
28     void add(UserEntity user);
29     /**
30      * @Description :更新用戶信息
31      * @return :void
32     **/
33     void update(UserEntity user);
34     /**
35      * @Description :刪除用戶信息
36      * @return :void
37     **/
38     void delete(UserEntity user);
39     /**
40      * @Description :根據id查詢用戶信息
41      * @return :java.lang.Object
42     **/
43     UserEntity getUserById(int id);
44 }
UserDao.java
  • UserDaoImpl(用戶DAO層實現類)
 1 package dolphin.dao.impl;
 2 
 3 import dolphin.dao.UserDao;
 4 import org.springframework.beans.factory.annotation.Autowired;
 5 import org.springframework.orm.hibernate5.HibernateTemplate;
 6 import org.springframework.stereotype.Repository;
 7 import dolphin.entity.UserEntity;
 8 
 9 import javax.annotation.Resource;
10 import java.util.List;
11 
12 /**
13  * @Description :UserDao
14  * @author :郭小柒w
15  * @date :2020/3/26 12:20
16  */
17 @Repository
18 public class UserDaoImpl implements UserDao {
19     //提供Hibernate模板
20     @Autowired
21     @Resource
22     private HibernateTemplate hibernateTemplate;
23 
24     public HibernateTemplate getHibernateTemplate() {
25         return hibernateTemplate;
26     }
27 
28     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
29         this.hibernateTemplate = hibernateTemplate;
30     }
31 
32     public boolean isLoginOk(String username, String password){
33         List<UserEntity> list = getAll();
34         for (UserEntity arr:list) {
35             if(username.equals(arr.getUserName())&&password.equals(arr.getUserKey()))
36                 return true;
37         }
38         return false;
39     }
40     @Override
41     public List<UserEntity>getAll() {
42         return this.hibernateTemplate.loadAll(UserEntity.class);
43     }
44 
45     @Override
46     public void add(UserEntity user) {
47         this.hibernateTemplate.save(user);
48     }
49 
50     @Override
51     public void update(UserEntity user) {
52         this.hibernateTemplate.update(user);
53     }
54 
55     @Override
56     public void delete(UserEntity user) {
57         this.hibernateTemplate.delete(user);
58     }
59 
60     @Override
61     public UserEntity getUserById(int id) {
62         return getHibernateTemplate().get(UserEntity.class,id);
63     }
64 }
UserDaoImpl.java
  • AddController(邏輯控制層,新增記錄)
 1 package dolphin.controller;
 2 
 3 import dolphin.entity.UserEntity;
 4 import dolphin.service.UserService;
 5 import dolphin.utils.Singleton;
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 
 9 import javax.servlet.http.HttpServletRequest;
10 import java.util.List;
11 
12 /**
13  * @description :添加數據控制層
14  * @author :郭小柒w
15  * @date :2020/3/26 15:52
16  * @version :1.0
17  */
18 @Controller
19 public class AddController {
20     private UserService userService = (UserService) Singleton.GetApplicationContext().getBean("UserServiceImpl");
21     /**
22      * @Description :新增一條用戶信息
23      * @return :java.lang.String
24     **/
25     @RequestMapping("/addUser")
26     public String addUser(HttpServletRequest request){
27         UserEntity user = new UserEntity();
28         user.setUserName(request.getParameter("id"));
29         user.setUserKey(request.getParameter("key"));
30         System.out.println(user.getUserName()+" "+user.getUserKey());
31         userService.add(user);
32         List<UserEntity> list = userService.getAll();
33         request.getSession().setAttribute("list",list);
34         return "show";
35     }
36 }
AddController.java
  • index.jsp(數據輸入頁)
 1 <%--
 2   Created by IntelliJ IDEA.
 3   User: 郭小柒w
 4   Date: 2020/3/26
 5   Time: 18:38
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 9 <html>
10 <head>
11     <title>Title</title>
12 </head>
13 <body>
14     <a href="showUser">增刪改查</a><br>
15     <form action="./addUser", method="post">
16         用戶名:<input name="id" type="text"><br>
17         密&nbsp&nbsp&nbsp&nbsp碼:<input name="key" type="password"><br>
18         <button type="submit">提交</button>
19     </form><br>
20     <%--
21 
22     <form action="./deleteUser", method="post">
23         用戶Id:<input name="id" type="text">
24         <input type="submit">
25     </form><br>
26 
27     <form action="./updateUser", method="post">
28         用戶Id:<input name="id" type="text"><br>
29         用戶名:<input name="key" type="text"><br>
30         <button type="submit">修改</button>
31     </form><br>
32 
33     <form action="./findUser", method="post">
34     用戶Id:<input name="id" type="text">
35     <input type="submit" text="查詢">
36     </form><br>
37     --%>
38 </body>
39 </html>
index.jsp
  • show.jsp(數據展示頁)
 1 <%@ page import="java.util.List" %>
 2 <%@ page import="dolphin.entity.UserEntity" %><%--
 3   Created by IntelliJ IDEA.
 4   User: 郭小柒w
 5   Date: 2020/3/26
 6   Time: 19:07
 7   To change this template use File | Settings | File Templates.
 8 --%>
 9 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
10 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
11 <html>
12 <head>
13     <title>展示</title>
14 </head>
15 <body>
16 <%
17     List<UserEntity> list = (List<UserEntity>) request.getSession().getAttribute("list");
18     if(list.size()!=0 || list!=null)
19         for (UserEntity arr :list) {
20             response.getWriter().println("ID是"+arr.getUserId()+"姓名是:"+arr.getUserName()+"   密碼是:"+arr.getUserKey()+"<br>");
21         }
22 %>
23 <%--    <c:forEach var="r" items="${xuanlist}"  varStatus="vs">--%>
24 <%--        ID是:${r}--%>
25 <%--        姓名是:${r.name}--%>
26 <%--    </c:forEach>--%>
27 </body>
28 </html>
show.jsp

 

  效果圖如下,輸入數據提交:

 

 

 

  

 

 

 

  數據展示頁面:

  雖然在這里只展示了新增一條記錄(只用到用戶的兩種屬性->姓名和密碼)的過程,但是我貼出的代碼里(UserDaoImpl.java)包含了查找、刪除和更新的具體實現,有興趣的朋友可以自行編寫對應的Controller來實現功能。另外,有關HibernateTemplate的更多用法以及講解請自行搜索,我這里只是最基本的增刪改查用法(還請各位不要笑話,我也是剛學(╥﹏╥)...

 

  —————————我———是———分———割———線—————————

 

  說點閑話(廢話

  被需求分析、概要設計以及詳細設計三個文檔搞得頭昏腦脹,這個系列也拖更了兩周(這是第三周🙃)。雖然是寫給自己看的,但這么久不更還是覺得不太合適,之前也是抱着一腔熱血要在博客這塊地方留下濃墨重彩的一筆,現實卻是自己的造詣遠遠不夠格啊🐷。加之被開頭說的三個文檔打擊了一番,瞬間覺得寫東西並不全是件快樂的事,尤其是寫不擅長的內容而且還要保質保量,着實痛苦🤪。不過萬事開頭難,和開篇說的一樣,自己還是很希望在這漫長的流水賬記錄里收獲一些東西的,只能給自己打打氣,再接再厲吧!(不出意外的話這周應該能按時更新,逃...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM