http://blog.csdn.net/wangshfa/article/details/27323297

 
1 public interface BatchDao<T> {
2     public void batchInsert(List<T> list);
3      
4     public void batchUpdate(List<T> list);
5 }
1 public interface ReceiptDao extends PagingAndSortingRepository<Receipt, Long>, BatchDao<Receipt> {
2      
3     // start回单录入
4     Page<Receipt> findByUserId(Long userId, Pageable pageable);
5  
6 }
01 import java.util.List;
02  
03 import javax.persistence.EntityManager;
04 import javax.persistence.PersistenceContext;
05  
06 import org.hibernate.Query;
07 import org.hibernate.ScrollableResults;
08 import org.hibernate.Session;
09 import org.springframework.transaction.annotation.Transactional;
10  
11 import com.ygsoft.cxpt.dao.BatchDao;
12 import com.ygsoft.util.dwz.Page;
13  
14 /**
15  *
16  * @author <a href="mailto:ketayao@gmail.com">ketayao</a> Version 1.1.0
17  * @since 2012-8-27 上午10:55:41
18  */
19  
20 public abstract class AbstractDao implements BatchDao{
21  
22     @PersistenceContext
23     protected EntityManager em;
24  
25     @Transactional
26     public void batchInsert(List list) {
27         for (int i = 0; i < list.size(); i++) {
28             em.persist(list.get(i));
29             if (i % 30 == 0) {
30                 em.flush();
31                 em.clear();
32             }
33         }
34     }
35      
36     @Transactional
37     public void batchUpdate(List list) {
38         for (int i = 0; i < list.size(); i++) {
39             em.merge(list.get(i));
40             if (i % 30 == 0) {
41                 em.flush();
42                 em.clear();
43             }
44         }
45     }
46  
47     /**
48      * Hibernate使用游标分页的一个通用查询分页方法
49      * 描述
50      * @param queryString
51      * @param parameters
52      * @param page
53      * @return
54      */
55     @SuppressWarnings("unchecked")
56     public List findPageByQuery(final String queryString,
57             final Object[] parameters, final Page page) {
58  
59         Session session = (Session) em.getDelegate();
60  
61         Query query = session.createQuery(queryString);
62  
63         // 判断有无条件参数的情况
64         if (parameters != null) {
65             for (int i = 0; i < parameters.length; i++) {
66                 query.setParameter(i, parameters[i]);
67             }
68         }
69  
70         // 使用游标来得到总条数
71         ScrollableResults sr = query.scroll();
72         sr.last();
73         int totalCount = sr.getRowNumber();
74  
75         // 索引加1
76         int totalRec = totalCount + 1;
77         page.setTotalCount(totalRec);
78  
79         int startIndex = (page.getPageNum() - 1) * page.getNumPerPage();
80  
81         query.setFirstResult(startIndex);
82         query.setMaxResults(page.getNumPerPage());
83  
84         List reList = query.list();
85  
86         return reList;
87     }
88 }
01 import com.ygsoft.cxpt.entity.FmisItem;
02  
03 /**
04  
05  * @author  <a href="mailto:ketayao@gmail.com">ketayao</a>
06  * Version  1.1.0
07  * @since   2012-9-7 下午5:28:58
08  */
09 @Repository
10 public class FmisItemDaoImpl extends AbstractDao<FmisItem> {
11  
12 }

Spring data jpa批量插入和更新的更多相关文章

  1. 【spring data jpa】spring data jpa 中的update 更新字段,如果原字段值为null不处理,不为null则在原来的值上加一段字符串

    示例代码: /** * 如果barCode字段值为null则不处理 * 如果barCode字段值不为null则在原本值的前面拼接 del: * @param dealer * @return */ @ ...

  2. spring data jpa开启批量插入、批量更新

    spring data jpa开启批量插入.批量更新 原文链接:https://www.cnblogs.com/blog5277/p/10661096.html 原文作者:博客园--曲高终和寡 *** ...

  3. 关于Spring Data JPA更新部分字段的问题

    1.问题背景 个人比较喜欢Spring data JPA,这次的问题是在实体类中使用List类型作为字段,JPA也提供了操作的方法,即使用@ElementCollection注解,网上对于JPA的知识 ...

  4. 在Spring Data JPA 中使用Update Query更新实体类

    对于 Spring Data JPA 使用的时间不长,只有两年时间.但是踩过坑的却不少. 使用下列代码 @Modifying @Query("update User u set u.firs ...

  5. Spring Data JPA 初体验

    一,JPA相关的概念 JPA概述 全称是:JavaPersistence API.是SUN公司推出的一套基于ORM的规范. Hibernate框架中提供了JPA的实现. JPA通过JDK 5.0注解或 ...

  6. spring data jpa 的简单使用

    先说简单一下JPA 概念:JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据. 影响 ...

  7. spring data jpa使用 (转:http://www.manongjc.com/article/25284.html#four_1_7)

    Jap相关的使用 时间:2018-12-18 本文章向大家介绍Jap相关的使用,主要包括Jap相关的使用使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下. ...

  8. Spring Data JPA系列3:JPA项目中核心场景与进阶用法介绍

    大家好,又见面了. 到这里呢,已经是本SpringData JPA系列文档的第三篇了,先来回顾下前面两篇: 在第1篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring ...

  9. Spring Data JPA 学习记录1 -- 单向1:N关联的一些问题

    开新坑 开新坑了(笑)....公司项目使用的是Spring Data JPA做持久化框架....学习了一段时间以后发现了一点值得注意的小问题.....与大家分享 主要是针对1:N单向关联产生的一系列问 ...

随机推荐

  1. DTCMS插件的制作实例电子资源管理(二)Admin后台页面编写

    总目录 插件目录结构(一) Admin后台页面编写(二) 前台模板页编写(三) URL重写(四) 本实例旨在以一个实际的项目中的例子来介绍如何在dtcms中制作插件,本系列文章非入门教程,部分逻辑实现 ...

  2. .Net分布式异常报警系统-简介

    系统简介 分布式异常报警系统就是收集系统运行过程中产生的未处理异常,检查系统运行的状态,并将异常信息统一发送到服务端,由服务端将信息通知到相关的责任人.  问题 我们在项目开发中可能遇到以下几个问题: ...

  3. 将IList转换为List

     简单点说,IList<T>直接转换为List<T>可以不用考虑.IList<T>可以用至少2种方式简单的复制成List<T>:1.IList<T ...

  4. hdu2642二维树状数组单点更新+区间查询

    http://acm.hdu.edu.cn/showproblem.php?pid=2642 题目大意:一个星空,二维的.上面有1000*1000的格点,每个格点上有星星在闪烁.一开始时星星全部暗淡着 ...

  5. 【JQuery】jQuery.inArray 确定第一个参数在数组中的位置

    函数:jQuery.inArray(value,array,[fromIndex]) 解释:         value:用于在数组中查找是否存在         array:待处理数组.       ...

  6. iOS 隐藏/去掉 导航栏返回按钮中的文字

    [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(, -) forBarMetrics:U ...

  7. date 显示或设置系统时间和日期

    显示或设置系统时间和日期 date [options] [+format] date [options] [new date] date用来显示系统的时间和日期,超级用户可以使用date来更改系统时钟 ...

  8. CSS3自动添加省略号

    text-overflow:ellipsis; white-space:nowrap; overflow:hidden; 不换行,一行显示溢出时,文本自动换行.以前都是js计算的,现在可好. elli ...

  9. 一个Activity掌握Android5.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常 ...

  10. Java自己实现双向链表LinkList

    /** * <p> * Node 双向链表实体类 * <p> * * @author <a href="mailto:yangkj@corp.21cn.com& ...