栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hibernate实现批量添加数据的方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate实现批量添加数据的方法

本文实例讲述了Hibernate实现批量添加数据的方法。分享给大家供大家参考,具体如下:

1.Hibernate_016_BatchAddData程序目录结构:

2.lib目录下所引入的jar包:

3.MedicineDao.java源代码:

package com.xqh.dao;
import java.util.List;
import org.hibernate.Session;
import com.xqh.model.Medicine;
import com.xqh.util.HibernateUtil;

public class MedicineDao {
  
  public void saveMedicines(List ms) {
    Session session = null;
    if (ms != null && ms.size() > 0) {
      try {
 session = HibernateUtil.getSession(); // 获取Session
 session.beginTransaction(); // 开启事物
 Medicine medicine = null; // 创建药品对象
 // 循环获取药品对象
 for (int i = 0; i < ms.size(); i++) {
   medicine = (Medicine) ms.get(i); // 获取药品
   session.save(medicine); // 保存药品对象
   // 批插入的对象立即写入数据库并释放内存
   if (i % 10 == 0) {
     session.flush();
     session.clear();
   }
 }
 session.getTransaction().commit(); // 提交事物
      } catch (Exception e) {
 e.printStackTrace(); // 打印错误信息
 session.getTransaction().rollback(); // 出错将回滚事物
      } finally {
 HibernateUtil.closeSession(session); // 关闭Session
      }
    }
  }
}

4.Medicine.java源代码:

package com.xqh.model;

public class Medicine {
  private Integer id;//id号
  private String name;      //药品名称
  private double price;      //价格
  private String factoryAdd;   //出厂地址
  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public double getPrice() {
    return price;
  }
  public void setPrice(double price) {
    this.price = price;
  }
  public String getFactoryAdd() {
    return factoryAdd;
  }
  public void setFactoryAdd(String factoryAdd) {
    this.factoryAdd = factoryAdd;
  }
}

5.Medicine.hbm.xml源代码:




  
    
      
    
    
    
    
  


6.SaveMedicine.java源代码:

package com.xqh.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xqh.dao.MedicineDao;
import com.xqh.model.Medicine;
public class SaveMedicine extends HttpServlet {
  private static final long serialVersionUID = 3743334039515411666L;
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    // 药品名称
    String names[] = request.getParameterValues("name");
    // 价格
    String prices[] = request.getParameterValues("price");
    // 出厂地址
    String adds[] = request.getParameterValues("factoryAdd");
    // 有效性判断
    if(names != null && prices != null && adds != null){
      if(names.length == prices.length && names.length == adds.length){
 // 实例化一个List集合
 List ms = new ArrayList();
 Medicine m = null; // 药品对象
 // 依次实例化药品对象并添加到集合中
 for (int i = 0; i < names.length; i++) {
   m = new Medicine(); // 实例化药品
   // 对属性赋值
   m.setName(names[i]);
   m.setPrice(Double.parseDouble(prices[i]));
   m.setFactoryAdd(adds[i]);
   ms.add(m); // 添加到集合中
 }
 // 实例化MedicineDao对象
 MedicineDao dao = new MedicineDao();
 dao.saveMedicines(ms); // 批量保存药品
 request.setAttribute("info", "药品信息保存成功!!!");
      }
    }
    // 转发到result.jsp页面
    request.getRequestDispatcher("result.jsp").forward(request, response);
  }
}

7.CharacterEncodingFilter.java源代码:


package com.xqh.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharacterEncodingFilter implements Filter{
  protected String encoding = null;
  protected FilterConfig filterConfig = null;
  public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    this.encoding = filterConfig.getInitParameter("encoding");
  }
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    if (encoding != null) {
      request.setCharacterEncoding(encoding);
      response.setContentType("text/html; charset="+encoding);
    }
    chain.doFilter(request, response);
  }
  public void destroy() {
    this.encoding = null;
    this.filterConfig = null;
  }
}

8.HibernateUtil.java源代码:

package com.xqh.util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
  // SessionFactory对象
  private static SessionFactory factory = null;
  // 静态块
  static {
    try {
      // 加载Hibernate配置文件
      Configuration cfg = new Configuration().configure();
      // 实例化SessionFactory
      factory = cfg.buildSessionFactory();
    } catch (HibernateException e) {
      e.printStackTrace();
    }
  }
  
  public static Session getSession() {
    //如果SessionFacroty不为空,则开启Session
    Session session = (factory != null) ? factory.openSession() : null;
    return session;
  }
  
  public static SessionFactory getSessionFactory() {
    return factory;
  }
  
  public static void closeSession(Session session) {
    if (session != null) {
      if (session.isOpen()) {
 session.close(); // 关闭Session
      }
    }
  }
}

9.hibernate.cfg.xml源代码:




  
    
    org.hibernate.dialect.MySQLDialect
    
    jdbc:mysql://localhost:3306/learn
    
    root
    
    1120
    
    com.mysql.jdbc.Driver
    
    true
    
    update
    
    
  


10.log4j.properties源代码:

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
#log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
#log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

11.index.jsp源代码:

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>


  
    批量添加药品信息
    
td {
  background: #EBEBEB;
  font-family: Verdana;
  font-size: 12px;
  background-color: #EBEBEB;
  color: black;
  line-height: 20px;
  height: 30px;
}

    
  
  
    
    
      
名称: 单价: 厂址:

12.result.jsp源代码:

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>


 
  结果信息
  
 
 
  
    
      ${info}
    
    
    返回
  
 


13.数据表tb_medicine_batch结构:

14.程序运行结果截图:

希望本文所述对大家基于Hibernate框架的Java程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/150404.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号