介绍
使用java怎么实现一个mysql分表操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
设置项目气动执行次方法(每天检查一次表记录)
public class DayInterval implements ServletContextListener { private static  SimpleDateFormat simpleDateFormat=new simpleDateFormat (“yyyy-MM-dd  HH: mm: ss"); public static  void showDayTime (), { Timer dTimer =, new 计时器(); dTimer.schedule (new TimerTask (), { @Override public void  run (), { System.out.println才能(“每日任务执行:“+ simpleDateFormat.format (new 日期())); LogTableCreate 才能;LogTableCreate =, new LogTableCreate (); Thread 才能线程=new 线程(logTableCreate); thread.start才能(); } },,1000,,,24 *,60 *,60,*,1000);//24 *,60 *,60,*,1000(第一次一秒后执行,以后每次一天后执行) } @Override public void  contextDestroyed (ServletContextEvent arg0), {//showdaytime (); } @Override public void  contextInitialized (ServletContextEvent arg0), { showDayTime (); } }
LogTableCreate用来做表分表是否已经创建,如现在是9月在启动时检查是否存在当月表记录,不存在则创建存在则不创建,另外检查是否存在10月份表记录,不存在则创建(提前创建一个也空表,以此类推)。
拷贝代码修改createsql(建表的sql), URL(数据库地址),用户(数据库连接用户),密码(数据库连接密码)
public class LogTableCreate extends TimerTask { private static  final Log Log =, LogFactory.getLog (LogTableCreate.class); public static  final String  TBASENAME=皌b_log"; private String createsql =,,, (\ r \ n", +, “,“ID”, varchar (64), NOT NULL COMMENT & # 39;主键ID # 39; \ r \ n",, +, “,“标识”,varchar (255), DEFAULT NULL COMMENT & # 39;用户id # 39; \ r \ n",, +, “,“用户名”,varchar (255), DEFAULT NULL COMMENT & # 39;用户姓名& # 39;\ r \ n",, +, “,“useridcard”, varchar (255), DEFAULT NULL COMMENT & # 39;用户身份证号码& # 39;\ r \ n",, +, “,“realname”, varchar (64), DEFAULT NULL COMMENT & # 39;真实姓名& # 39;\ r \ n",, +, “,“logintime”, varchar (255), DEFAULT NULL COMMENT & # 39;登录时间& # 39;\ r \ n",, +, “,“exittime”, varchar (64), DEFAULT NULL COMMENT & # 39;退出时间& # 39;\ r \ n",, +, “,“ippath”, varchar (255), DEFAULT NULL COMMENT & # 39; ip地址& # 39;\ r \ n",, +, “,“macpath”, varchar (255), DEFAULT NULL COMMENT & # 39; mac地址& # 39;\ r \ n",, +, “,“usercreatedtime”, varchar (255), DEFAULT NULL COMMENT & # 39;用户创建时间& # 39;\ r \ n",, +, “,“userbusidaddress”, varchar (255), DEFAULT NULL COMMENT & # 39;用户钱包地址& # 39;\ r \ n",, +, “,“成员”,int (11), DEFAULT NULL COMMENT & # 39;是否是会员& # 39;\ r \ n",, +, “,“membertype”, int (11), DEFAULT NULL COMMENT & # 39;会员类型& # 39;\ r \ n",, +, “,“spare1”, varchar (255), DEFAULT NULL, \ r \ n", +, “,“spare2”, varchar (255), DEFAULT NULL, \ r \ n", +, “,“spare3”, varchar (255), DEFAULT NULL, \ r \ n", +, “,PRIMARY KEY (ID) \ r \ n", +, “)“; ,private SimpleDateFormat sdyyyy =, new SimpleDateFormat (“yyyy"); ,private SimpleDateFormat sdmm =, new SimpleDateFormat (“MM"); ,private static  final String  URL =,““ ,private static  final String  USER =,““ ,private static  final String  PASSWORD =,““ ,//得到表名 ,public static  String 可以获得的(),{ ,Date Date =, new 日期(); ,LogTableCreate logTableCreate=new logTableCreate (); String yyyy =, logTableCreate.sdyyyy.format(日期); String mm =, logTableCreate.sdmm.format(日期); String nmm =, logTableCreate.getNextMM (mm); return TBASENAME + yyyy + mm; ,} ,//得到下一个月 private String  getNextMM (String 毫米){ String nmm =,““ int imm =, Integer.parseInt (mm); 如果(imm>=12) { 时间=nmm “01”; 其他}{ imm + +; 如果(imm> 9) 时间=nmm ““+ imm; 其他的 时间=nmm “0”; + imm; } return nmm; }, @Override public void  run (), { Date Date =, new 日期(); String yyyy =, sdyyyy.format(日期); String mm =, sdmm.format(日期); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null使用java怎么实现一个mysql分表操作