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. Java:注解(元数据)

    初识Java注解 所谓的元数据是指用来描述数据的数据,可能刚听到元数据的时候你会有点陌生,其实任何一个使用过struts或者hibernate的开发人员都在不知不觉中使用元数据,更通俗一点来说元数据是 ...

  2. Android之捕获TextView超链接

    应该是好久没有写有关技术类的文章了,今天分享一篇捕获TextView超链接的文章,希望对大家有所帮助,我终于在歪路上回归正途了.这个捕获TextView超链接应该算是比较常用吧,如果你会了,就不用看了 ...

  3. Xamarin Android -创建Splash Screen (一)

    ......(空话少说) Xamarin 开发的技术资料很少,通过学习,把自己的学习过程及其中碰到的问题与大家分享. Splash Screen 就是在应用程序启动时,出现的一张图片,一般App的Sp ...

  4. jsonp的优缺点

    转载:http://www.w3cfuns.com/notes/18271/df9ecd8f0ca5e523ae75745a3996c47c.html JSONP的优缺点        1.优点    ...

  5. 如何限制虚拟主机可使用的CPU资源

    使用IIS 6.0运营虚拟主机的朋友们都会碰到这样一个问题,当某个网站占用大量CPU资源时,会把整个服务器都拖慢了,影响服务器上其他网站的访问速度,客户们的投诉也让系统管理员倍感头疼.我们知道,从II ...

  6. poj-1384 Piggy-Bank

    poj-1384 Piggy-Bank 地址:http://poj.org/problem?id=1384 题意: 知道盒子里面的物体的总重量,得到每一种硬币的价格和重量,求最少钱构成盒子物体总重量的 ...

  7. python列表下标用法

    python中的列表下标实在太灵活了,要根据表象来分析它的内在机理,这样用起来才能溜.下标可以为负数有利有弊,好处是使用起来更简便,坏处是当我下表越界了我也不知道反倒发生奇奇怪怪的错误. print ...

  8. Windows去除快捷箭头

    美化桌面 bat代码: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shel ...

  9. 在Word2013中多次应用格式刷

    顾名思义,格式刷是为了方便需要跨区域操作时候,能快速的应用格式到相应文本.那么怎么使用word进行格式刷的多次使用呢.我们先来看单次的,这个比较容易,只要在先需要的格式单击一次格式刷,再到需要的文本执 ...

  10. Shell命令_文件系统常用命令df、du

    一.df(文件系统查看命令) [root@localhost ~]# df [选项] [挂载点] 选项: -a 显示所有的文件系统信息,包括特殊文件系统,如 /proc. /sysfs -h 使用习惯 ...