|
@@ -16,7 +16,7 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
+ *
|
|
|
* 类名称:PagingHibernateJdbcDao<br>
|
|
|
* 类描述:基于Hibernate的原生sql分页查询支持多数据库<br>
|
|
|
* @version v1.0
|
|
@@ -40,38 +40,38 @@ public class PagingHibernateJdbcDao {
|
|
|
* 批量插入
|
|
|
* @param list
|
|
|
*/
|
|
|
- @Transactional
|
|
|
- public void batchInsert(@SuppressWarnings("rawtypes") List list){
|
|
|
- for (int i = 0; i < list.size(); i++) {
|
|
|
- em.persist(list.get(i));
|
|
|
- if (i % 30 == 0) {
|
|
|
- em.flush();
|
|
|
- em.clear();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- @Transactional
|
|
|
- public void batchInsertObject(Object object){
|
|
|
- em.persist(object);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 批量更新
|
|
|
- * @param list
|
|
|
- */
|
|
|
- @Transactional
|
|
|
- public void batchUpdate(@SuppressWarnings("rawtypes") List list){
|
|
|
- for (int i = 0; i < list.size(); i++) {
|
|
|
- em.merge(list.get(i));
|
|
|
- if (i % 30 == 0) {
|
|
|
- em.flush();
|
|
|
- em.clear();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ @Transactional
|
|
|
+ public void batchInsert(@SuppressWarnings("rawtypes") List list){
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ em.persist(list.get(i));
|
|
|
+ if (i % 30 == 0) {
|
|
|
+ em.flush();
|
|
|
+ em.clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ @Transactional
|
|
|
+ public void batchInsertObject(Object object){
|
|
|
+ em.persist(object);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 批量更新
|
|
|
+ * @param list
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void batchUpdate(@SuppressWarnings("rawtypes") List list){
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ em.merge(list.get(i));
|
|
|
+ if (i % 30 == 0) {
|
|
|
+ em.flush();
|
|
|
+ em.clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* count查询
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sql 查询语句
|
|
|
* @return 结果集行数
|
|
|
*/
|
|
@@ -82,7 +82,7 @@ public class PagingHibernateJdbcDao {
|
|
|
|
|
|
/**
|
|
|
* 带参数count查询
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sql 查询语句,参数用 ? 代替
|
|
|
* @param args 查询参数
|
|
|
* @return 结果集行数
|
|
@@ -111,16 +111,16 @@ public class PagingHibernateJdbcDao {
|
|
|
}
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public <T> List<T> findList(String sql , Object[] args, Class<T> clazz){
|
|
|
- Query query = createSQLQuery(sql);
|
|
|
- query = setParameters(query, args);
|
|
|
- query.setResultTransformer(new EntityResultTransformer(clazz));
|
|
|
- List<T> results =query.list();
|
|
|
- return results;
|
|
|
+ Query query = createSQLQuery(sql);
|
|
|
+ query = setParameters(query, args);
|
|
|
+ query.setResultTransformer(new EntityResultTransformer(clazz));
|
|
|
+ List<T> results =query.list();
|
|
|
+ return results;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 分页查询:查询结果集
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sql 查询语句
|
|
|
* @param page 分页条件
|
|
|
* @param clazz 返回domain实体的class
|
|
@@ -143,7 +143,7 @@ public class PagingHibernateJdbcDao {
|
|
|
|
|
|
/**
|
|
|
* 分页查询:查询结果集
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sql 查询语句,参数用 ? 代替
|
|
|
* @param args 查询参数
|
|
|
* @param page 分页条件
|
|
@@ -168,7 +168,7 @@ public class PagingHibernateJdbcDao {
|
|
|
|
|
|
/**
|
|
|
* 分页查询:查询结果集
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sql 查询语句
|
|
|
* @param page 分页条件
|
|
|
* @return 分页实体
|
|
@@ -210,7 +210,7 @@ public class PagingHibernateJdbcDao {
|
|
|
|
|
|
/**
|
|
|
* 分页查询:查询结果集
|
|
|
- *
|
|
|
+ *
|
|
|
* @param sql 查询语句,参数用 ? 代替
|
|
|
* @param args 查询参数
|
|
|
* @param page 分页条件
|
|
@@ -233,12 +233,12 @@ public class PagingHibernateJdbcDao {
|
|
|
}
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public List<Map<String, Object>> findMap(String sql, Object[] args) {
|
|
|
- List<Map<String, Object>> results;
|
|
|
- Query query = createSQLQuery(sql);
|
|
|
- query = setParameters(query, args);
|
|
|
- query.setResultTransformer(new MapResultTransformer());
|
|
|
- results = query.list();
|
|
|
- return results;
|
|
|
+ List<Map<String, Object>> results;
|
|
|
+ Query query = createSQLQuery(sql);
|
|
|
+ query = setParameters(query, args);
|
|
|
+ query.setResultTransformer(new MapResultTransformer());
|
|
|
+ results = query.list();
|
|
|
+ return results;
|
|
|
}
|
|
|
|
|
|
// 创建count语句
|
|
@@ -267,7 +267,7 @@ public class PagingHibernateJdbcDao {
|
|
|
|
|
|
// 设置分页参数
|
|
|
private Query setPageable(Query query, Pageable page) {
|
|
|
- query.setFirstResult(page.getPageNumber());
|
|
|
+ query.setFirstResult(page.getOffset());
|
|
|
query.setMaxResults(page.getPageSize());
|
|
|
return query;
|
|
|
}
|
|
@@ -300,7 +300,7 @@ public class PagingHibernateJdbcDao {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (temp % batchSize != 0) {
|
|
|
+ if (temp > 0 && temp % batchSize != 0) {
|
|
|
em.flush();
|
|
|
em.clear();
|
|
|
}
|