Sping与Hibernate整合批量添加数据 示例
- 1.创建Web项目,引入以下jar包
antlr-2.7.6.jar、asm.jar、cglib-2.1.3.jar、commons-collections-2.1.1.jar、commons-logging-1.0.4.jar
dom4j-1.6.1.jar、ehcache-1.2.jar、hibernate3.jar、jstl-1.2.jar、jta.jar、log4j-1.2.11.jar、mysql-connector-java-5.1.10-bin.jar、mysql-connector-java-5.1.38.jar、slf4j-api-1.5.8.jar、slf4j-log4j12-1.5.8.jar、spring-aop-4.3.20.RELEASE.jar、spring-web.jar、spring-webmvc.jar、spring.jar
- 2.创建javabean 类User.java
public class User{
private Integer id;//id值
private String name;//用户名称
private String business;//职务
private Date addTime;//添加时间
... //省略setter()和getter()方法
}
- 3.创建hibernate映射文件User.hbm.xml,此文件和User.java在同一个目录
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mr.user.User" table="User">
<!-- id值 -->
<id name="id" column="id" type="int">
<generator class="native"/>
</id>
<!-- 名称 -->
<property name="name" type="string" length="45">
<column name="name"/>
</property>
<!-- 职务 -->
<property name="business" type="string" length="45">
<column name="business"/>
</property>
<!-- 信息添加时间 -->
<property name="addTime" type="java.util.Date">
<column name="addTime"/>
</property>
</class>
</hibernate-mapping>
- 4.创建DAOSupport.java继承HibernateDaoSupport
public class DAOSupport extends HibernateDaoSupport {
public void InsertPatchInfo(int count,HttpServletRequest request,HttpServletResponse response){
String name = request.getParameter("name");//用户名称
String business = request.getParameter("business");//职务
HibernateTemplate template = this.getHibernateTemplate();//实例化Hibernate模板
for(int i = 0; i < count ; i++){//批量执行添加方法
User userVO = new User();//实例化对象
userVO.setName(name+i);//设置用户名
userVO.setBusiness(business);//设置职务
userVO.setAddTime(new Date());//设置添加时间
template.save(userVO);//执行添加方法
}
}
}
- 5.创建批量添加信息的控制器AddUser.java 继承AbstractController
public class AddUser extends AbstractController {
private DAOSupport dst;//注入DAOSupport
public DAOSupport getDst() {
return dst;
}
public void setDst(DAOSupport dst) {
this.dst = dst;
}
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//添加信息的条数
request.setCharacterEncoding("UTF-8");
int count = Integer.parseInt(request.getParameter("count"));
dst.InsertPatchInfo(count,request,response);//执行封装的批量添加方法
Map map = new HashMap();//定义映射
//设置添加成功时的提示信息
map.put("succ", "信息添加成功,共添加"+count+"条信息!");
return new ModelAndView("index",map);
}
}
- 6.创建applicationContext.xml,在/WEB-INF/根目录下
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<!-- ?characterEncoding=utf-8这样可以解决乱码 -->
<value>jdbc:mysql://localhost:3306/db_database13?characterEncoding=utf-8
</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>hwp123456</value>
</property>
</bean>
<!-- 定义Hibernate的sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<!-- 数据库连接方言 -->
<prop key="dialect">org.hibernate.dialect.SQLServerDialect</prop>
<!-- 在控制台输出SQL语句 -->
<prop key="hibernate.show_sql">true</prop>
<!-- 格式化控制台输出的SQL语句 -->
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<!--hibernate映射文件 -->
<property name="mappingResources">
<list>
<value>com/mr/user/User.hbm.xml</value>
</list>
</property>
</bean>
<!-- 为DAOSupport注入sessionFactory -->
<bean id="dao" class="com.mr.dao.DAOSupport">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<!--定义控制器转发视图类 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<!-- 映射的do -->
<bean name="/save.do" class="com.mr.main.AddUser">
<property name="dst">
<ref local="dao"/>
</property>
</bean>
</beans>
- 7.编辑index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
request.setAttribute("ContextPath", path);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>批量添加信息</title>
</head>
<body>
<div id="main">
<form action="${ContextPath}/save.do" method="post">
<br />
<table>
<tr>
<td width="120px" class="td_pad">用户名称:</td>
<td><input type="text" name="name" value="" /></td>
</tr>
<tr>
<td width="120px" class="td_pad">职务:</td>
<td><input type="text" name="business" value="" /></td>
</tr>
<tr>
<td width="120px" class="td_pad">添加信息数量:</td>
<td><input type="text" name="count" value="" /></td>
</tr>
<tr>
<td align="center" colspan="2" class="td_pad">
<input type="submit" value="添加" /> <input type="reset"
value="取消" /></td>
</tr>
</table>
</form>
</div>
<!-- 信息添加成功后的提示信息 -->
<script type="text/javascript">
<c:if test="${succ!=null}">
alert("${succ}");
</c:if>
</script>
</body>
</html>
- 8.配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
- 9.数据库DDL,数据库名字db-database,表名字User ,数据库库账号和密码要根据实际设置
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`business` varchar(45) DEFAULT NULL,
`addTime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
网友评论