关于数据库分表跟后台操作(会一直补充)
关于数据库分表和后台操作(会一直补充)
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); } } } }