关于数据库分表和后台操作(会一直补充)
2015-07-20 08:48
375 查看
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); } } } }
相关文章推荐
- 关于数据库分表操作
- 关于打开数据库时提示"对象打开时,不允许操作",问题分析及解决办法
- 关于缓存和数据库结合的应用——写操作的瓶颈
- 关于Flex的导出操作.--从数据库中读出内容导出
- 关于java基础--连接池与通用的操作数据库更新方法
- 关于数据库的一些操作
- 关于MySQL分表操作的研究
- 关于数据库的分库分表浅析
- 关于数据库事务启用后的查询操作
- 关于AD的操作 --补充
- 关于数据库操作及事务的处理
- 数据库开发基本操作-关于sql server 2005 未开放1433端口的问题
- Node.js的DAO层,关于数据库操作的db.js
- 关于SQLite数据库的基本指令以及C语言操作数据库
- 软件后台的数据库管理与操作
- C# 使用DataSet+dataAdapter操作后台数据库之事务处理方法1,欢迎拍砖
- 随便写点:关于java操作数据库和oracle锁。。。
- 关于如何获得数据库插入操作中数据的自增长主键的值
- 关于论坛数据库的设计(分表分库等-转)
- 关于论坛数据库的设计(分表分库等-转)