Spring+Spring MVC+Hibernate增查(使用注解)

使用Spring+Spring MVC+Hibernate做增删改查开发效率真的很高。使用Hibernate简化了JDBC连接数据库的的重复性代码。下面根据自己做的一个简单的增加和查询,把一些难点分析出来:

首先项目目录结构:(Hibernate持久化数据连接信息交给Spring进行管理;别忘了加入Hibernate和Spring相关的架包.jar)

第一步:弄个用户实体类(配置Users.hbm.xml映射文件):

 1 package com.ssh.SpringMVC.enity;
 2
 3
 4
 5 public class Users {
 6
 7     private int id;//id
 8     private String username;//用户名
 9     private String password;//密码
10     private String sex;//性别
11     /**
12      * @return the id
13      */
14     public int getId() {
15         return id;
16     }
17     /**
18      * @param id the id to set
19      */
20     public void setId(int id) {
21         this.id = id;
22     }
23     /**
24      * @return the username
25      */
26     public String getUsername() {
27         return username;
28     }
29     /**
30      * @param username the username to set
31      */
32     public void setUsername(String username) {
33         this.username = username;
34     }
35     /**
36      * @return the password
37      */
38     public String getPassword() {
39         return password;
40     }
41     /**
42      * @param password the password to set
43      */
44     public void setPassword(String password) {
45         this.password = password;
46     }
47     /**
48      * @return the sex
49      */
50     public String getSex() {
51         return sex;
52     }
53     /**
54      * @param sex the sex to set
55      */
56     public void setSex(String sex) {
57         this.sex = sex;
58     }
59
60 }
 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 5
 6
 7 <hibernate-mapping
 8     package="com.ssh.SpringMVC.enity">
 9
10     <class name="Users" table="t_users">
11         <id name="id">
12             <generator class="increment"/>
13         </id>
14         <property name="username" />
15         <property name="password"/>
16         <property name="sex"/>
17     </class>
18
19
20 </hibernate-mapping>

第二步:建个Dao层(公共类)

 1 package com.ssh.SpringMVC.Dao;
 2
 3 import java.util.List;
 4
 5 /*
 6  * 公共类
 7  */
 8 public interface IBaseDao<T> {
 9     //保存对象
10     public void save(T t);
11     //删除对象
12     public void delete(int id);
13     //更新对象
14     public void update(T t);
15     //根据id查询对象
16     public T getObjectByid(int id);
17     //查询所有对象
18     public List<T> getObjectALL();
19     //根据一组id查询一组对象
20     public List<T> getObjectByids(int ids);
21
22 }
 1 package com.ssh.SpringMVC.Dao.Impl;
 2
 3 import java.lang.reflect.ParameterizedType;
 4 import java.util.List;
 5
 6 import javax.annotation.Resource;
 7
 8 import org.hibernate.SessionFactory;
 9
10 import org.springframework.transaction.annotation.Transactional;
11
12 import com.ssh.SpringMVC.Dao.IBaseDao;
13
14 /*
15  * 公共方法实现类
16  */
17 @SuppressWarnings("unchecked")
18 @Transactional
19 public class IBaseDaoImpl<T> implements IBaseDao<T>{
20
21     //注入sessionfactory
22     @Resource
23     SessionFactory sessionFactory;
24     Class clazz;
25
26
27     //构造方法:获取T的真实类型
28     public IBaseDaoImpl(){
29         ParameterizedType pType=(ParameterizedType) this.getClass().getGenericSuperclass();
30         clazz=(Class) pType.getActualTypeArguments()[0];
31     System.out.print(clazz.getSimpleName());
32
33     }
34     /*
35      * 删除对象
36      * (non-Javadoc)
37      * @see com.ssh.SpringMVC.Dao.IBaseDao#delete(int)
38      */
39     public void delete(int id) {
40         // TODO Auto-generated method stub
41         sessionFactory.getCurrentSession().delete(
42                 sessionFactory.getCurrentSession().get(clazz, id));
43     }
44
45     /*
46      * 查询所有对象
47      * (non-Javadoc)
48      * @see com.ssh.SpringMVC.Dao.IBaseDao#getObjectALL()
49      */
50
51     public List<T> getObjectALL() {
52 //        System.out.println("=====:"+"from"+clazz.getSimpleName());
53 //        System.out.println("=====:"+"from    "+clazz.getSimpleName());
54 //        System.out.println("--------------"+clazz.getSimpleName());
55         return sessionFactory.getCurrentSession().createQuery("from "+clazz.getSimpleName()).list();
56     }
57       /*
58        * 根据id获取对象
59        * (non-Javadoc)
60        * @see com.ssh.SpringMVC.Dao.IBaseDao#getObjectByid(int)
61        */
62     public T getObjectByid(int id) {
63         // TODO Auto-generated method stub
64         return (T) sessionFactory.getCurrentSession().get(clazz, id);
65     }
66
67
68     /*
69      * 根据一组id获取一组对象
70      * (non-Javadoc)
71      * @see com.ssh.SpringMVC.Dao.IBaseDao#getObjectByids(int)
72      */
73     public List<T> getObjectByids(int ids) {
74         // TODO Auto-generated method stub
75         return sessionFactory.getCurrentSession().createQuery(
76         "from"+clazz.getSimpleName()+"where id in(:ids)").setParameter("ids", ids).list();
77     }
78     /*
79      * 保存对象
80      * (non-Javadoc)
81      * @see com.ssh.SpringMVC.Dao.IBaseDao#save(java.lang.Object)
82      */
83     public void save(T t) {
84         // TODO Auto-generated method stub
85     sessionFactory.getCurrentSession().save(t);
86     }
87
88     public void update(T t) {
89         // TODO Auto-generated method stub
90         sessionFactory.getCurrentSession().update(t);
91     }
92
93 }

第三步:Servse用户逻辑层

 1 package com.ssh.SpringMVC.Servse;
 2
 3 import com.ssh.SpringMVC.Dao.IBaseDao;
 4 import com.ssh.SpringMVC.enity.Users;
 5
 6 /*
 7  * 用户逻辑层
 8  */
 9
10 public interface IUserService extends IBaseDao<Users>{
11    //定义特有方法。。。
12 }
 1 package com.ssh.SpringMVC.Servse.Impl;
 2
 3 import org.springframework.stereotype.Service;
 4
 5 import com.ssh.SpringMVC.Dao.Impl.IBaseDaoImpl;
 6 import com.ssh.SpringMVC.Servse.IUserService;
 7 import com.ssh.SpringMVC.enity.Users;
 8 /*
 9  * 用户实现类
10  *
11  */
12 @Service("userService")
13 public class IUserServiceImpl extends  IBaseDaoImpl<Users> implements IUserService{
14
15 }

第四步:配置applicationContext.xml和springmvc.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:tx="http://www.springframework.org/schema/tx"
 5     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans
 7            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 8            http://www.springframework.org/schema/context
 9            http://www.springframework.org/schema/context/spring-context-2.5.xsd
10            http://www.springframework.org/schema/tx
11            http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
12
13
14
15     <!-- 引入外部配置文件 -->
16     <context:property-placeholder location="classpath:oracle.properties" />
17
18     <!-- 配置数据源(将所有的配置写在Spirng中) -->
19     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
20
21         <!-- 数据库连接信息 -->
22         <property name="url" value="${url}" />
23         <property name="username" value="${username}" />
24         <property name="password" value="${password}" />
25         <property name="driverClassName" value="${driverClassName}" />
26
27         <!-- 最大连接数 -->
28         <property name="maxActive" value="${maxActive}" />
29         <!-- 最大空闲数 -->
30         <property name="maxIdle" value="${maxIdle}" />
31         <!--最小空闲数-->
32         <property name="minIdle" value="${minIdle}" />
33         <!-- 初始连接数 -->
34         <property name="initialSize" value="${initialSize}" />
35
36     </bean>
37
38     <!-- 创建sessionFactory -->
39     <bean id="sessionFactory"
40         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
41         <property name="dataSource" ref="dataSource" />
42
43
44         <!-- 配置Hibernate配置信息 -->
45         <property name="hibernateProperties">
46             <props>
47                 <prop key="hibernate.show_sql">true</prop>
48                 <prop key="hibernate.hbm2ddl.auto">update</prop>
49                 <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
50             </props>
51         </property>
52
53         <!-- 配置实体类映射信息 -->
54         <property name="mappingResources">
55             <list>
56
57                 <value>com/ssh/SpringMVC/enity/Users.hbm.xml</value>
58
59            </list>
60         </property>
61
62     </bean>
63
64     <!--    配置事务管理器    -->
65     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
66         <property name="sessionFactory" ref="sessionFactory"/>
67     </bean>
68
69
70
71 </beans>
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans
 6            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 7            http://www.springframework.org/schema/context
 8            http://www.springframework.org/schema/context/spring-context-2.5.xsd
 9            http://www.springframework.org/schema/tx
10            http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
11
12     <!--    SpringMVC的配置规则和Spring是一样的:无缝集成    -->
13         <!-- 配置扫描器;自动装配 -->
14     <context:component-scan base-package="com.ssh.SpringMVC" />
15
16       <!-- 注解事务配置 -->
17     <tx:annotation-driven transaction-manager="transactionManager" />
18
19     <!--    配置视图    -->
20     <bean id="internalView"
21         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
22         <!--    配置视图前缀    -->
23
24         <property name="prefix" value="/" />
25         <!--    配置视图后缀    -->
26         <property name="suffix" value=".jsp" />
27     </bean>
28
29
30 </beans>

web.xml配置:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7
 8     <!-- spring监听器: -->
 9     <listener>
10     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
11
12     </listener>
13
14     <!-- 指定spring文件路径 -->
15     <context-param>
16     <param-name>contextConfigLocation</param-name>
17     <param-value>classpath:applicationContext.xml</param-value>
18     </context-param>
19
20     <!-- =====================配置spring mvc  Start================================= -->
21     <servlet>
22     <servlet-name>SpringMVC</servlet-name>
23     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
24
25     <!--配置springmvc路劲-->
26     <init-param>
27     <param-name>contextConfigLocation</param-name>
28     <param-value>classpath:springmvc.xml</param-value>
29     </init-param>
30     <!--    >=0代表web容器启动的时候加载servlet(数字代表优先级)    -->
31     <load-on-startup>1</load-on-startup>
32     </servlet>
33
34     <servlet-mapping>
35     <servlet-name>SpringMVC</servlet-name>
36     <url-pattern>/</url-pattern>
37
38     </servlet-mapping>
39
40     <!--    配置编码过滤器    -->
41     <filter>
42         <filter-name>encoding</filter-name>
43         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
44         <init-param>
45             <param-name>encoding</param-name>
46             <param-value>utf-8</param-value>
47         </init-param>
48         <init-param>
49             <param-name>forceEncoding</param-name>
50             <param-value>true</param-value>
51         </init-param>
52     </filter>
53     <filter-mapping>
54         <filter-name>encoding</filter-name>
55         <url-pattern>/*</url-pattern>
56     </filter-mapping>
57
58
59
60   <welcome-file-list>
61     <welcome-file>index.jsp</welcome-file>
62   </welcome-file-list>
63 </web-app>

第五步:注册页面:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11
12     <title>用户注册</title>
13
14
15   </head>
16
17   <body>
18     <form action="userController?add" method="post">
19     <table>
20     <tr>
21     <td>用户名:</td>
22         <td><input type="text" name="username" /></td>
23     </tr>
24       <tr>
25       <td>密码:</td>
26         <td><input type="text" name="password" /></td>
27       </tr>
28         <tr>
29         <td>性别:</td>
30         <td><input type="radio" name="sex" value="男" />男 &nbsp;<input type="radio" name="sex" value="女" />女</td>
31         </tr>
32           <tr>
33           <td></td>
34         <td><input type="submit" /></td>
35           </tr>
36
37
38     </table>
39
40     </form>
41   </body>
42 </html>

注册跳转至处理页:

 1 package com.ssh.SpringMVC.controller;
 2
 3
 4 import java.util.List;
 5
 6 import javax.annotation.Resource;
 7
 8
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.servlet.ModelAndView;
11
12
13 import com.ssh.SpringMVC.Servse.IUserService;
14 import com.ssh.SpringMVC.enity.Users;
15
16 /**
17  * 控制层
18  * @author Administrator
19  *
20  */
21 @org.springframework.stereotype.Controller
22 @RequestMapping("/userController")
23 public class UserController {
24
25     //注入业务层
26     @Resource
27     IUserService userService;
28     /*
29      * 添加用户
30      */
31     @RequestMapping(params="add")
32     public String add(Users user){
33         userService.save(user);
34
35         return "redirect:userController?all";
36
37     }
38     /*
39      * 查询所有对象
40      */
41     @RequestMapping(params="all")
42     public ModelAndView all(){
43
44         //list集合
45         List<Users> li=userService.getObjectALL();
46
47         return new ModelAndView("index","userLi",li);
48     }
49 }

然后跳转至index.jsp查询所有用户信息:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
 3 <%
 4 String path = request.getContextPath();
 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 6 %>
 7
 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 9 <html>
10   <head>
11     <base href="<%=basePath%>">
12
13     <title>My JSP ‘index.jsp‘ starting page</title>
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22   </head>
23
24  <body>
25     <table border="1" cellpadding="10" cellspacing="0">
26         <tr>
27             <th>id</th>
28             <th>姓名</th>
29             <th>密码</th>
30             <th>性别</th>
31         </tr>
32         <c:forEach items="${userLi}" var="li">
33             <tr>
34                 <td>${li.id}</td>
35                 <td>${li.username}</td>
36                 <td>${li.password}</td>
37                 <td>${li.sex}</td>
38             </tr>
39         </c:forEach>
40     </table>
41
42 </body>
43 </html>

陷阱先知:

本人在做查询的时候犯了个严重的不细心的问题:错误如下:

因为这个错纠结了一个多小时。原因是什么,看下图就明白了:

查询语句忘记了打空格,本来查询from Users,结果from Users合成一个fromUsers,才出现上面的错,都是不细心造成的,谨记,下次务犯。

您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 

如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   

如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: [email protected]或加入JAVA技术交流群:306431857

如果需要转载,请注明出处,谢谢!!
时间: 2024-09-28 10:41:56

Spring+Spring MVC+Hibernate增查(使用注解)的相关文章

Spring + Spring MVC + Hibernate项目开发集成(注解)

在自己从事的项目中都是使用xml配置的方式来进行的,随着项目的越来越大,会发现配置文件会相当的庞大,这个不利于项目的进行和后期的维护.于是考虑使用注解的方式来进行项目的开发,前些日子就抽空学习了一下.在网上也查询了很多使用注解来搭建开发框架的文章,但是有一个问题就是,使用更新的软件版本会出错.这里我将使用最新的Spring,Hibernate来进行框架的搭建,经过测试,顺利运行.分享旨在与大家一起分享学习,共同进步,有不足之处,望不吝赐教,谢谢! 本项目使用maven构建,采用Spring +

搭建基于全注解的Spring+Spring MVC+Hibernate框架

以实例讲解Spring+Spring MVC+Hibernate框架搭建步骤: 一.配置web.xml Xml代码   <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XML

Spring MVC + Hibernate + Maven: Crud操作示例

Alexey是一个在使用Java,TestNG 和Selenium的自动化WEB应用程序中有丰富经验的测试开发者.他如此的喜欢QA以至于在下班后他为初级QA工程师提供培训课程. 在这篇文章中我想介绍一个Spring MVC + Hibernate + Maven例子.这组技术主要涉及一些基础知识,我想在每一个必要的地方详细解释它.本篇话题范围以外的更多资源,我会提供链接方便你阅读.在文章的最后,我将发布一个GitHub的链接. 目标 示例web应用程序是基于Spring MVC, Hiberna

Spring + Spring MVC + Hibernate

Spring + Spring MVC + Hibernate项目开发集成(注解) Posted on 2015-05-09 11:58 沐浴未来的我和你 阅读(307) 评论(0) 编辑 收藏 在自己从事的项目中都是使用xml配置的方式来进行的,随着项目的越来越大,会发现配置文件会相当的庞大,这个不利于项目的进行和后期的维护.于是考虑使用注解的方式来进行项目的开发,前些日子就抽空学习了一下.在网上也查询了很多使用注解来搭建开发框架的文章,但是有一个问题就是,使用更新的软件版本会出错.这里我将使

spring mvc+hibernate的基本配置

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p&

IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践

最近把编辑器换成IntelliJ IDEA,主要是Eclipse中处理Maven项目很不方便,很早就听说IntelliJ IDEA的大名了,但是一直没机会试试.最近终于下载安装了,由于是新手,决定尝试个Tutorials,最终找了个熟悉点的项目,就是Getting Started with Spring MVC, Hibernate and JSON(http://confluence.jetbrains.com/display/IntelliJIDEA/Getting+Started+with

Spring Security 4 Hibernate整合 注解和xml例子(带源码)

[相关已翻译的本系列其他文章,点击分类里面的spring security 4] [ 翻译by 明明如月 QQ 605283073] 上一篇文章:Spring Security 4 基于角色的登录例子(带源码) 下一篇文章:Spring Security 4 整合Hibernate Bcrypt密码加密(带源码) 原文地址:http://websystique.com/spring-security/spring-security-4-hibernate-annotation-example/

Spring MVC+Hibernate JPA搭建的博客系统项目中所遇到的坑

标签: springmvc hibernate 2016年12月21日 21:48:035133人阅读 评论(0) 收藏 举报  分类: Spring/Spring MVC(6)  Hibernate(1)  版权声明:本文为博主原创文章,未经博主允许不得转载,如需转载,请注明文章出处为 http://www.54tianzhisheng.cn/,否则考虑法律追究责任,谢谢合作! https://blog.csdn.net/tzs_1041218129/article/details/53791

spring boot(十五)spring boot+thymeleaf+jpa增删改查示例

快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.