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. 基于.NET Socket API 通信的综合应用

    闲谈一下,最近和客户进行对接Scoket 本地的程序作为请求方以及接受方,对接Scoket 的难度实在比较大,因为涉及到响应方返回的报文的不一致性,对于返回的报文的格式我需要做反序列化的难度增大了不少 ...

  2. js如何判断一个数组

    typeof [] 为一个"object" 不能通过此方法判断一个数组 方法 1.instanceof方法,这个方法用的比较多. 2.这个是es5以后推荐的方法,Object.pr ...

  3. getContentResolver()内容解析者查询联系人、插入联系人

    首先,我们需要知道的两个Uri: 1.Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");//查到 ...

  4. json数据转换失败json_last_error int(4)

    最近在程序中使用json_decode($data,true);转换失败, 并且使用 json_last_error();方法返回最后一次转换的错误,json_last_error();返回int(4 ...

  5. 东大OJ-1430-PrimeNumbers

    题目描述 I'll give you a number , please tell me how many different prime factors in this number. 输入 The ...

  6. 十天冲刺---Day7

    站立式会议 站立式会议内容总结: 燃尽图 照片 两个人编码其实效率挺高的.但是在一些方面,比如说页面UI的编写,会非常吃力,很难达到自己的效果. 由于埋头在编码,所以issues的增加随之停止. 有点 ...

  7. freemarker 分页取值

    <#if pagination??&&pagination.list??> <#list pagination.list as video> <td al ...

  8. 开发错误记录5:Failed to resolve: com

    今在导入项目时报:Failed to resolve: com.android.support:appcompat-v7:23.1.1包! 一.按F12查看包引用情况 v7包版本不一样,环境中只有co ...

  9. 在 ASP.NET 中执行 URL 重写的方法

    由于需要我们经常会想将动态的页面做成伪静态的,或者在get传值的时候使其简洁明了(实现“可删节”的URL),这时我们需要用到URL重写,微软的MSDN上有详细的原理和使用介绍.我这里就将一种简单的使用 ...

  10. Linux_脚本安装包(以Webmin的安装为例)

    1.Webmin下载地址:https://sourceforge.net/projects/webadmin/files/webmin/        版本使用1.820 2.解压Webmin     ...