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. 快速备份和还原 MySQL 数据库的另一种方法

    一直使用 SQL Server 作为公司产品的数据库来存储系统数据,所以备份还原一直都不是问题,因为 SQL Server 的备份还原非常迅速和易用.但今年公司改变策略,使用起 MySQL 数据库作为 ...

  2. linux命令行安装使用KVM

    一.说明 本篇文章介绍的是基于centos环境来安装的,ip地址192.168.4.233 二.检查CPU是否支持虚拟技术 egrep 'vmx|svm' /proc/cpuinfo 如果有输出内容表 ...

  3. Css-自适应高度修复(高度随内容而自动撑高)

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. JS是按值传递还是按引用传递

    按值传递(call by value)是最常用的求值策略:函数的形参是被调用时所传实参的副本.修改形参的值并不会影响实参. 按引用传递(call by reference)时,函数的形参接收实参的隐式 ...

  5. [转]Java日期时间使用总结

    原文地址:http://lavasoft.blog.51cto.com/62575/52975/ 一.Java中的日期概述   日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中 ...

  6. 【BZOJ 3049】【USACO2013 Jan】Island Travels BFS+状压DP

    这是今天下午的互测题,只得了60多分 分析一下错因: $dis[i][j]$只记录了相邻的两个岛屿之间的距离,我一开始以为可以,后来$charge$提醒我有可能会出现来回走的情况,而状压转移就一次,无 ...

  7. PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?

    PCA, Principle Component Analysis, 主成份分析, 是使用最广泛的降维算法. ...... (关于PCA的算法步骤和应用场景随便一搜就能找到了, 所以这里就不说了. ) ...

  8. linux 下远程连接windows

    安装软件 sudo apt-get install rdesktop 连接windows 然后进入windows登陆界面 输入应户名密码后就进入windows了 注意的是 参数-f是全屏的意思  然后 ...

  9. java-首字母大小写

    /** * 首字母小写 * * @param str * @return */ public static String toLowerCaseFirstChar(String s) { if (Ch ...

  10. unittest测试驱动之HTMLTestRunner.py

    对于自动化来说,测试报告是必须的,在敏捷化的团队中,团队中的成员需要自动化这边提供自动化的测试报告,来判断系统的整体质量以及下一步的测试策略.单元测试库生成测试输出到控制台的窗口上,但是这样的结果看起 ...