项目实战(二)后台批量插入数据库,前台进度条显示进度

本功能后台通过List批量插入数据库,前台通过ajax调用,动态显示进度条。

先上传运行截图页面很丑陋,没美工。嵌套bootstrap的进度条。

项目实战(二)后台批量插入数据库,前台进度条显示进度_第1张图片项目实战(二)后台批量插入数据库,前台进度条显示进度_第2张图片项目实战(二)后台批量插入数据库,前台进度条显示进度_第3张图片项目实战(二)后台批量插入数据库,前台进度条显示进度_第4张图片

前台代码:

点击button按钮,进行后台的数据库批量上传


	
		
正在启动,请稍后......

Ajax进行进度条的更新和后台的数据交互:


后台的实现:

后台代码:
后台用的springmvc+mybatis,插入数据库是采用List的批量插入,我们将整个List拆分成100份,注意此时的数据量非常大,百万级。
类中定义的:

//传值的索引
	public static int index;
	
	public static List list = null;

后台:

//前台调用更新进度条
	@RequestMapping(value="/progress.action")
	@ResponseBody
	public int progress(HttpServletResponse response,HttpServletRequest request){
		
		if(flag == 1){
			flag = 0;
			insert(null, response, request);
			return index;
		}else{
			return index;
		}
	}
	
	
	//导入功能
	@RequestMapping(value = "/insert.action")
	@ResponseBody
    public void insert(Model model, HttpServletResponse response,HttpServletRequest request) {  
		try {
			
			list = toData.paraseExcel(pathAll);
			//输出文件的路径
			System.out.println(pathAll);
			int length = list.size();
			System.out.println(length);
			int listArray = list.size()/100;
			if(index >=100){
				index = 0;
			}
			//int index=0;
			while(index<100){
	    		if(index<99){
	    			toData.proDisp(list.subList(index*listArray, (index+1)*listArray));
	    			index++;
	    			
	    			
	    		}else{
	    			toData.proDisp(list.subList(index*listArray, list.size()));
	    			index++;
	    			list.clear();
	    			flag = 1;
	    		}
	    		
	    	}
		
			System.out.println("导入ok!");
		
		} catch (Exception e) {
			
			e.printStackTrace();
			
		}
		
		
    }  
















你可能感兴趣的:(项目实战(二)后台批量插入数据库,前台进度条显示进度)