如何搭建一个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的更多用法以及讲解请自行搜索,我这里只是最基本的增删改查用法(还请各位不要笑话,我也是刚学(╥﹏╥)...

 

  —————————我———是———分———割———线—————————

 

  说点闲话(废话

  被需求分析、概要设计以及详细设计三个文档搞得头昏脑胀,这个系列也拖更了两周(这是第三周🙃)。虽然是写给自己看的,但这么久不更还是觉得不太合适,之前也是抱着一腔热血要在博客这块地方留下浓墨重彩的一笔,现实却是自己的造诣远远不够格啊🐷。加之被开头说的三个文档打击了一番,瞬间觉得写东西并不全是件快乐的事,尤其是写不擅长的内容而且还要保质保量,着实痛苦🤪。不过万事开头难,和开篇说的一样,自己还是很希望在这漫长的流水账记录里收获一些东西的,只能给自己打打气,再接再厉吧!(不出意外的话这周应该能按时更新,逃...

posted @ 2020-04-20 15:43  小柒w  阅读(1352)  评论(0编辑  收藏  举报