国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Hibernate實現批量添加數據的方法

2019-11-26 14:29:03
字體:
來源:轉載
供稿:網友

本文實例講述了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 {  /**   * 批量保存藥品   *   * @param ms   *      List集合   */  public void saveMedicines(List<Medicine> 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源代碼:

<?xml version="1.0"?><!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.xqh.model.Medicine" table="tb_medicine_batch">    <id name="id">      <generator class="native"/>    </id>    <property name="name" not-null="true" length="200" />    <property name="price" not-null="true"/>    <property name="factoryAdd" length="200"/>  </class></hibernate-mapping>

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<Medicine> ms = new ArrayList<Medicine>();        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源代碼:

/* * To change this template, choose Tools | Templates * and open the template in the editor. */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;/** * Hibernate初始化類,用于獲取Session、SessionFactory 及關閉Session */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();    }  }  /**   * 獲取Session對象   * @return Session對象   */  public static Session getSession() {    //如果SessionFacroty不為空,則開啟Session    Session session = (factory != null) ? factory.openSession() : null;    return session;  }  /**   * 獲取SessionFactory對象   * @return SessionFactory對象   */  public static SessionFactory getSessionFactory() {    return factory;  }  /**   * 關閉Session   * @param session對象   */  public static void closeSession(Session session) {    if (session != null) {      if (session.isOpen()) {        session.close(); // 關閉Session      }    }  }}

9.hibernate.cfg.xml源代碼:

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration>  <session-factory>    <!-- 方言 -->    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>    <!-- 數據庫連接 -->    <property name="connection.url">jdbc:mysql://localhost:3306/learn</property>    <!-- 數據庫連接用戶名 -->    <property name="connection.username">root</property>    <!-- 數據庫連接密碼 -->    <property name="connection.password">1120</property>    <!-- 數據庫驅動 -->    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>    <!-- 打印SQL語句 -->    <property name="show_sql">true</property>    <!-- 自動建表 -->    <property name="hibernate.hbm2ddl.auto">update</property>    <!-- 映射文件 -->    <mapping resource="com/xqh/model/Medicine.hbm.xml"/>  </session-factory></hibernate-configuration>

10.log4j.properties源代碼:

### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.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"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>批量添加藥品信息</title>    <style type="text/css">td {  background: #EBEBEB;  font-family: Verdana;  font-size: 12px;  background-color: #EBEBEB;  color: black;  line-height: 20px;  height: 30px;}</style>    <script type="text/javascript">    function add(){      var a = document.getElementById("a");      var b = document.getElementById("b");      b.innerHTML += a.innerHTML;    }    function reduce() {      var a = document.getElementById("a");      var b = document.getElementById("b");      var stra = a.innerHTML;      var strb = b.innerHTML;      b.innerHTML = strb.substring(0, strb.length - stra.length);    }    function save(formName){      for(i=0;i<formName.length;i++){        if(formName.elements[i].value==""){          alert("請填寫完整信息!");          return false;        }      }    }  </script>  </head>  <body onload="add()">    <form action="SaveMedicine" method="post"      onsubmit="return save(this);">      <table align="center" border="0" cellpadding="3" cellspacing="1"        width="600">        <tr>          <td align="center">            <br>            <h1>              批量添加藥品信息            </h1>          </td>        </tr>        <tr>          <td>            <div id="b"></div>          </td>        </tr>        <tr>          <td>            <input type="button" value="添加一行 " onclick="add()">            <input type="button" value="減少一行" onclick="reduce()">            <input type="submit" value="批量添加到數據庫">          </td>        </tr>      </table>    </form>    <div id="a" style="display: none">      <table align="center" border="0">        <tr>          <td>            名稱:          </td>          <td>            <input type="text" name="name" size="13">          </td>          <td>            單價:          </td>          <td>            <input type="text" name="price" size="13">          </td>          <td>            廠址:          </td>          <td>            <input type="text" name="factoryAdd" size="30">          </td>        </tr>      </table>    </div>  </body></html>

12.result.jsp源代碼:

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>  <title>結果信息</title>  <!--  <link rel="stylesheet" type="text/css" href="styles.css">  --> </head> <body>  <div align="center">    <font color="red" size="12px;" style="font-weight: bold;">      ${info}    </font>    <br><br><br><br>    <a href="index.jsp">返回</a>  </div> </body></html>

13.數據表tb_medicine_batch結構:

14.程序運行結果截圖:

希望本文所述對大家基于Hibernate框架的Java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜章县| 祁连县| 铜陵市| 大洼县| 邹平县| 万源市| 永丰县| 乐山市| 宜良县| 法库县| 铜鼓县| 祁阳县| 孝昌县| 花垣县| 鹤山市| 汝州市| 修武县| 隆尧县| 车致| 自治县| 定日县| 黄平县| 恩平市| 鄯善县| 太湖县| 潢川县| 弥勒县| 盐山县| 钦州市| 谢通门县| 双城市| 和龙市| 沙洋县| 张家界市| 顺昌县| 宜兰市| 遂川县| 焦作市| 达州市| 湛江市| 义马市|