关于数据库分表和后台操作(会一直补充)

   ps:关于电商订单这块,订单表的设计应该是主表是保留订单相关属性,比如订单id,创建时间等等,客户信息,地址信息,物流信息等单独建表,形成 one-many,订单操作完,可以归档数据。所以说我们公司现在的表结构设计就是他妈的操蛋!

   定时器使用注解:@Scheduled(cron = "0 0/1 * * * ?") //每隔一分钟执行一次

 今天看到同事写的分表操作,先暂时记录下一些东西,后期会陆续补充。

 /**
     * 
     * 方法描述:定时执行订单超过24小时,自动将订单表的状态改为取消   
     * 创建时间:2015-5-26 下午7:51:26
     */
    @Scheduled(cron = "0 0/10 * * * ?")
    public void AutoModifyOrderStatusToCancel() {  
    	//调用定时执行订单超过24小时,自动将订单表的状态改为取消service   
	  this.orderTimeService.AutoModifyOrderStatusToCancel();   
	}  
	
	<select id="selectAutoCancelOrderId" resultMap="BaseResultMap">
		SELECT  boc.ORDER_ID, #{_parameter} AS tableNum 
		<if test="_parameter==-1">
			FROM BIZ_ORDER boc 
		</if>
		<if test="_parameter!=-1">
			FROM BIZ_ORDER_${_parameter} boc 
		</if>
		WHERE NOW()-INTERVAL 24  hour>ADD_DATE AND ORDER_STATUS=1
	</select>
	/**
	 * 
	 * 方法描述:自动执行更新超过24小时订单状态改为取消
	 * 创建时间:2015-5-26 下午7:36:39
	 */
	public void AutoModifyOrderStatusToCancel(){
		
		//根据物理分表,循环更新每一张表中的订单状态
		for(int tableNum=-1;tableNum<10;tableNum++){
			
			List<OrderTimerVO> orderList=this.baseDao.selectList("selectAutoCancelOrderId",tableNum, OrderTimerVO.class);
			
			//自动执行更新超过24小时订单状态改为取消
			if(orderList.size()>0){
				if(tableNum==-1){
					int result=this.baseDao.update("updateOrderStatusToCancelId",orderList,OrderTimerVO.class);
				}
				else if(tableNum==0){
					int result=this.baseDao.update("updateOrderStatusToCancelId0",orderList,OrderTimerVO.class);
				}
				else if(tableNum==1){
					int result=this.baseDao.update("updateOrderStatusToCancelId1",orderList,OrderTimerVO.class);
				}
				else if(tableNum==2){
					int result=this.baseDao.update("updateOrderStatusToCancelId2",orderList,OrderTimerVO.class);
				}
				else if(tableNum==3){
					int result=this.baseDao.update("updateOrderStatusToCancelId3",orderList,OrderTimerVO.class);
				}
				else if(tableNum==4){
					int result=this.baseDao.update("updateOrderStatusToCancelId4",orderList,OrderTimerVO.class);
				}
				else if(tableNum==5){
					int result=this.baseDao.update("updateOrderStatusToCancelId5",orderList,OrderTimerVO.class);
				}
				else if(tableNum==6){
					int result=this.baseDao.update("updateOrderStatusToCancelId6",orderList,OrderTimerVO.class);
				}
				else if(tableNum==7){
					int result=this.baseDao.update("updateOrderStatusToCancelId7",orderList,OrderTimerVO.class);
				}
				else if(tableNum==8){
					int result=this.baseDao.update("updateOrderStatusToCancelId8",orderList,OrderTimerVO.class);
				}
				else if(tableNum==9){
					int result=this.baseDao.update("updateOrderStatusToCancelId9",orderList,OrderTimerVO.class);
				}	
			}
			
			
		}
	}

猜你喜欢

转载自yt-lemon.iteye.com/blog/2228636