|
@ -39,6 +39,33 @@ public class DBPageExtract<T> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 不用多线程抽取
|
|
|
|
* @param clazz
|
|
|
|
* @param sql
|
|
|
|
* @param pageSize
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
private List<T> noMultiThreadExtract(Class<T> clazz, String sql, int pageSize) {
|
|
|
|
List<T> returnList=new ArrayList<T>();
|
|
|
|
int start=0;
|
|
|
|
int page=1;
|
|
|
|
while (true){
|
|
|
|
String finalSql=sql+" limit "+start+","+pageSize; //拼凑分页的语句
|
|
|
|
List<T> listTemp= jdbcTemplate.query(finalSql,new BeanPropertyRowMapper(clazz));
|
|
|
|
returnList.addAll(listTemp);//添加到list里面
|
|
|
|
//判断是都是最后页面
|
|
|
|
if(listTemp.size()!=pageSize){
|
|
|
|
listTemp.clear();
|
|
|
|
break;
|
|
|
|
}else{
|
|
|
|
start =page*pageSize;
|
|
|
|
page++;
|
|
|
|
listTemp.clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return returnList;
|
|
|
|
}
|
|
/**
|
|
/**
|
|
* 多线程抽取数据
|
|
* 多线程抽取数据
|
|
* @param clazz
|
|
* @param clazz
|
|
@ -69,6 +96,8 @@ public class DBPageExtract<T> {
|
|
if(asyncResult.isDone()){
|
|
if(asyncResult.isDone()){
|
|
//如果做完了就移除迭代器
|
|
//如果做完了就移除迭代器
|
|
asyncResultIterator.remove();
|
|
asyncResultIterator.remove();
|
|
|
|
}else{
|
|
|
|
Thread.sleep(500L);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//如果一直移除到没有下一个就跳出循环
|
|
//如果一直移除到没有下一个就跳出循环
|
|
@ -110,7 +139,7 @@ public class DBPageExtract<T> {
|
|
* @param clazz
|
|
* @param clazz
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Async
|
|
|
|
|
|
@Async("dbExtractExecutor")
|
|
private AsyncResult<Boolean> multiExtractData(String sql, int start, int pageSize, Class<T> clazz) {
|
|
private AsyncResult<Boolean> multiExtractData(String sql, int start, int pageSize, Class<T> clazz) {
|
|
String finalSql=sql+" limit "+start+","+pageSize; //拼凑分页的语句
|
|
String finalSql=sql+" limit "+start+","+pageSize; //拼凑分页的语句
|
|
List<T> listTemp= jdbcTemplate.query(finalSql,new BeanPropertyRowMapper(clazz));
|
|
List<T> listTemp= jdbcTemplate.query(finalSql,new BeanPropertyRowMapper(clazz));
|
|
@ -118,32 +147,5 @@ public class DBPageExtract<T> {
|
|
return new AsyncResult<>(true);
|
|
return new AsyncResult<>(true);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
|
|
* 不用多线程抽取
|
|
|
|
* @param clazz
|
|
|
|
* @param sql
|
|
|
|
* @param pageSize
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
private List<T> noMultiThreadExtract(Class<T> clazz, String sql, int pageSize) {
|
|
|
|
List<T> returnList=new ArrayList<T>();
|
|
|
|
int start=0;
|
|
|
|
int page=1;
|
|
|
|
while (true){
|
|
|
|
String finalSql=sql+" limit "+start+","+pageSize; //拼凑分页的语句
|
|
|
|
List<T> listTemp= jdbcTemplate.query(finalSql,new BeanPropertyRowMapper(clazz));
|
|
|
|
returnList.addAll(listTemp);//添加到list里面
|
|
|
|
//判断是都是最后页面
|
|
|
|
if(listTemp.size()!=pageSize){
|
|
|
|
listTemp.clear();
|
|
|
|
break;
|
|
|
|
}else{
|
|
|
|
start =page*pageSize;
|
|
|
|
page++;
|
|
|
|
listTemp.clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return returnList;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|