您的位置:首页 > 编程语言 > Java开发

spring data jpa batch批处理

2016-05-04 16:09 489 查看
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(LonguserId,Pageablepageable);
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<ahref="mailto:ketayao@gmail.com">ketayao</a>Version1.1.0
17
*
@since2012-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
*
@paramqueryString
51
*
@paramparameters
52
*
@parampage
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
}
view
source

print?

01
import
com.ygsoft.cxpt.entity.FmisItem;
02
03
/**
04
*
05
*
@author<ahref="mailto:ketayao@gmail.com">ketayao</a>
06
*
Version1.1.0
07
*
@since2012-9-7下午5:28:58
08
*/
09
@Repository
10
public
class
FmisItemDaoImpl
extends
AbstractDao<FmisItem>
{
11
12
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: