1. 程式人生 > >Hibernate批量儲存前臺傳遞的EasyUI-datagrid資料

Hibernate批量儲存前臺傳遞的EasyUI-datagrid資料

  上一篇部落格批量儲存EasyUI-datagrid中的資料中分析瞭如何將Easyui-datagrid中的資料轉換為Json字串,以及如何使用ajax方法將該json字串傳遞到後臺。接上一篇,本篇將說明我是如何將前臺傳來的json字串解析為實體類物件,並將它們儲存到資料庫中。
  首先說明一下我的方法的步驟:

  1. 使用Google的Gson將json字串反序列化為Java實體類物件

  2. 刪除掉資料庫中sumID欄位為1L的所有資料(批量刪除)

  3. 迴圈儲存Gson反序列化後得到的Java實體類物件

下面描述各個步驟的具體實現方法:

第一步:使用Google的Gson將json字串反序列化為Java實體類物件

Gson gson = new Gson();
//呼叫gson.fromJson()方法將前臺傳來的json字串(前臺ajax中data屬性後的equations)解析,並儲存到實體類集合中
List<EquaConfig> result = gson.fromJson(equations, new TypeToken<List<EquaConfig>>() {
            }.getType());

第二步:刪除掉資料庫中sumID欄位為1L的所有資料(批量刪除)
  這裡有兩種方法,我分別列出來:

  • 方法一:HQL語句
Transaction tx = null;
session = getSessionFactory().openSession(); tx = session.beginTransaction(); String hql = "delete from EquaConfig where sumID = '"+sumID+"'";//這裡的sumID為前臺ajax中屬性data中的sumID,即1L,我要先刪除資料庫中sunID欄位為1L的所有資料,再儲存新的資料 org.hibernate.Query q = session.createQuery(hql); q.executeUpdate(); tx.commit();
  • 方法二:條件查詢
session = getSessionFactory().openSession();
tx = session.beginTransaction();
List<EquaConfig> equalist = getEquaConfigByProcessID(sumID);//條件查詢資料庫中sumID欄位為1L的資料,儲存到實體類集合中
for (int i=0; i<equalist.size(); i++) {//上面查出來的資料有多條,用for迴圈刪除每一個物件
    session.delete(equalist.get(i));
}
tx.commit();

第三步:迴圈儲存Gson反序列化後得到的Java實體類物件

  第一步中已經用Google的Gson將前臺傳來的json字串解析成實體類集合,這裡只需要用for迴圈,分別儲存這個實體類集合中的每一個實體類物件即可。

for (int i=0; i<result.size(); i++) {
    EquaConfig equaConfig = new EquaConfig(result.get(i).getSumID(),result.get(i).getCoefficient(),result.get(i).getItemname());//實體類集合中的第i個實體類物件
    //下面是用Hibernate進行儲存
    Transaction tx = null;
    session = getSessionFactory().openSession();
    tx = session.beginTransaction();
    session.save(equaConfig);
    tx.commit();
}

如果我寫的內容對你有一些幫助,還請點個贊或者手動評論一下哦,給點正反饋嘛(^_^)☆當然了,我也是才開始學習這些知識,肯定會有很多錯誤的地方,希望大家能幫我指正出來,謝謝大家,一起進步~