Hibernate批量儲存前臺傳遞的EasyUI-datagrid資料
阿新 • • 發佈:2019-01-02
上一篇部落格批量儲存EasyUI-datagrid中的資料中分析瞭如何將Easyui-datagrid中的資料轉換為Json字串,以及如何使用ajax方法將該json字串傳遞到後臺。接上一篇,本篇將說明我是如何將前臺傳來的json字串解析為實體類物件,並將它們儲存到資料庫中。
首先說明一下我的方法的步驟:
使用Google的Gson將json字串反序列化為Java實體類物件
刪除掉資料庫中sumID欄位為1L的所有資料(批量刪除)
迴圈儲存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();
}
如果我寫的內容對你有一些幫助,還請點個贊或者手動評論一下哦,給點正反饋嘛(^_^)☆當然了,我也是才開始學習這些知識,肯定會有很多錯誤的地方,希望大家能幫我指正出來,謝謝大家,一起進步~