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. 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案

    简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...

  2. VI命令----用于检索

    装了个虚拟机Ubuntu,命令行模式用VI很不适应,需要学习! 1.vi 模式切换: Commond模式: 打开文件的默认模式,用ESC建切换到此模式 Insert模式: 按键:i 在光标前输入 a ...

  3. FlashFXP|FTP

    经典的FTP传输工具FlashFxp,留作几年吧!看和曾经用的软件代表着岁月的流逝和时间的推进性! 洒脱度过生活中的每一天.每一分钟,Mvpbang追随一生! 压缩包中有秘钥文件-flashfxp.k ...

  4. 【Python】 [基础] list和tuple

    list 类型,这不就是js里的数组吗,,最后一个元素索引是 -1list是一个可变的有序的表,#追加.append('admin')#插入.insert(1,'admin')#删除末尾元素.pop( ...

  5. ViewHolder数据错乱BUG

    需求是这样的,在列表中用一个图标标示某个item是已经被接下或者完成的任务. 对于文件有这样的操作,进入列表后第一页面展示正常,但是加载更多后同样位置出现了同样的标志.这不是我想要的效果 我的解决办法 ...

  6. webservice的常用注解

    定义说明书的显示方法1.@WebService(serviceName="PojoService", portName="PojoPort", name=&qu ...

  7. 使用jsp/servlet简单实现文件上传与下载

    使用JSP/Servlet简单实现文件上传与下载    通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用 ...

  8. MyEclipse下Maven的安装配置

    Maven常用命令: •mvn archetype:generate :创建 Maven 项目 •mvn compile :编译源代码 •mvn test-compile :编译测试代码 •mvn t ...

  9. model 的验证

    Ext.onReady(function(){ Ext.define('User', { extend: 'Ext.data.Model', fields: [ { name: 'name', typ ...

  10. 【HDU 1007】Quoit Design

    http://acm.hdu.edu.cn/showproblem.php?pid=1007 最近欧式距离模板题. 用分治大法(分治的函数名用cdq纯属个人习惯_(:з」∠)_) 一开始狂M. 后来判 ...