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:[email protected]">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:[email protected]">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 |
} |
时间: 2024-11-08 22:47:11