您好,欢迎访问上海贝乐莉网络科技有限公司!

tell
搜索

上海贝乐莉网络科技有限公司

                                          使用 JdbcTemplate 动态创建表并添加数据 动态连表查询

                                          文章来源:秋灵 时间:2025-02-19

                                          前方一经道了1个动静的凭据以后年华创办表战拔出数据的示例,那末怎样停止动静的查问呢?

                                          尔写了如许1个大众办法,仅供参照!

                                          那里须要传送二个时光隔断参数,凭据功夫隔断判定出入的月数,而后从肇端光阴最先递加月份,而后动静组装表的称呼,假设永存该表则符号须要看望

                                          全部的SQL经由过程 union all 去毗连,末了加添分页的参数,分页只合适MySQL数据库

                                          固然那个示例也仅仅适当于按月份去保存的环境

                                          代码其实不是很庞杂,盼望年夜家仍旧经由过程代码去明了1停:

                                          packagecom;importjava.sql.Connection;importjava.sql.DatabaseMetaData;importjava.sql.ResultSet;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.Date;importjava.util.GregorianCalendar;importjava.util.List;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importorg.springframework.jdbc.core.JdbcTemplate;/***@证明停止尝试*@authorcuisuqiang*@version1.0*@since*/publicclassDbTest{privatestaticApplicationContextcontext=null;@SuppressWarnings("unchecked")publicstaticvoidmain(String[]args){context=newClassPathXmlApplicationContext("applicationContext.xml");Stringsql="select*from:TABLE_NAME";Stringkey="nm_cpu_log";StringbeginTime="2012-1-112:12:12";StringendTime="2014-12-112:12:12";Stringformatkey="yyyy_MM";Listlist=getListFromEachTable(sql,key,beginTime,endTime,formatkey,1,100);if(null!=list){System.out.println(list.size());}else{System.out.println("不数据!");}}/***动静盘问表数据*@paramsqlTemplate要施行的单条SQL个中表称呼用:TABLE_NAME标志*@paramtableKey表前缀,没有包括战时期中央的停划线*@paramdateBegin最先时光yyyy-MM-ddHH:mm:ss*@paramdateEnd停止年光yyyy-MM-ddHH:mm:ss*@paramdateFormat时刻花样化体例*@parampageIndex分页索引从1最先*@parampageCount每页看望数目无穷造*@return模版盘问曲交前往*/@SuppressWarnings("unchecked")publicsynchronizedstaticListgetListFromEachTable(StringsqlTemplate,StringtableKey,StringdateBegin,StringdateEnd,StringdateFormat,intpageIndex,intpageCount){Listlist=null;try{//1公有几许须要施行的SQLList<String>sqlList=newArrayList<String>();JdbcTemplatejt=(JdbcTemplate)context.getBean("jdbcTemplate");//转为功夫Datedbegin=StringToDateTime(dateBegin);Datedend=StringToDateTime(dateEnd);//出入的月数intmonthCount=calculateMonthIn(dend,dbegin);for(inti=0;i<=monthCount;i++){//停N个月的岁月Dated=getNextMonth(dbegin,i);SimpleDateFormatformat=newSimpleDateFormat(dateFormat);//动静表实StringtableName=tableKey+"_"+format.format(d);//假使有某表if(getAllTableName(jt,tableName)){System.out.println("生活表:"+tableName);//调换称号得到SQLStringsql=sqlTemplate.replace(":TABLE_NAME",tableName);sqlList.add(sql);}}//本质要施行的SQLStringBuffersqlGo=newStringBuffer("");if(sqlList.size()>0){for(inti=0;i<sqlList.size();i++){if(i==sqlList.size()-1){sqlGo.append(sqlList.get(i));}else{sqlGo.append(sqlList.get(i)+"unionall");}}}if(sqlList.size()>0){//添加分页intcindex=(pageIndex-1)*pageCount;sqlGo.append("limit"+cindex+","+pageCount);}if(!"".equals(sqlGo.toString())){System.out.println("施行的SQL:"+sqlGo.toString());//施行查问list=jt.queryForList(sqlGo.toString());}}catch(Exceptione){e.printStackTrace();list=null;}returnlist;}/***将传进的字符串按yyyy-MM-ddHH:mm:ss花样变更成对于应的日期对于象*@paramstr须要改革的字符串*/publicsynchronizedstaticDateStringToDateTime(Stringstr){String_pattern="yyyy-MM-ddHH:mm:ss";returnStringToDate(str,_pattern);}/***将拔出的字符串按花样改换成对于应的日期对于象*@paramstr字符串*@parampattern花样*/publicsynchronizedstaticDateStringToDate(Stringstr,Stringpattern){DatedateTime=null;try{if(str!=null&&!str.equals("")){SimpleDateFormatformater=newSimpleDateFormat(pattern);dateTime=formater.parse(str);}}catch(Exceptionex){ex.printStackTrace();}returndateTime;}/***二个时分出入的月数*@paramdate1*@paramdate2*@return*/publicstaticintcalculateMonthIn(Datedate1,Datedate2){Calendarcal1=newGregorianCalendar();cal1.setTime(date1);Calendarcal2=newGregorianCalendar();cal2.setTime(date2);intc=(cal1.get(Calendar.YEAR)-cal2.get(Calendar.YEAR))*12+cal1.get(Calendar.MONTH)-cal2.get(Calendar.MONTH);returnc;}/***得到停几个月的期间对于象*@paramdate*@paramcount*@return*/publicstaticDategetNextMonth(Datedate,intcount){Calendarc=Calendar.getInstance();c.setTime(date);c.add(Calendar.MONTH,count);returnc.getTime();}/***查问数据库能否有某表*@paramjt*@paramtableName*@return*@throwsException*/@SuppressWarnings("unchecked")publicstaticbooleangetAllTableName(JdbcTemplatejt,StringtableName)throwsException{Connectionconn=jt.getDataSource().getConnection();ResultSettabs=null;try{DatabaseMetaDatadbMetaData=conn.getMetaData();String[]types={"TABLE"};tabs=dbMetaData.getTables(null,null,tableName,types);if(tabs.next()){returntrue;}}catch(Exceptione){e.printStackTrace();}finally{tabs.close();conn.close();}returnfalse;}}

                                          代码仅供参照,注重本质运用。

                                          注重那是1个系列的作品,注重先后几篇著作。

                                          推举您浏览更多相关于“ jdbc动静JdbcTemplate动静盘查数据 ”的作品

                                          微信

                                          扫一扫,关注我们公众号

                                          新闻中心

                                          公司名称:上海贝乐莉网络科技有限公司

                                          公司网址:上海市长宁区新乐大街34号

                                          这是描述信息

                                          扫一扫,进入手机官网

                                          Copyright © 2024-2025  上海贝乐莉网络科技有限公司   http://www.polipoliy.com  All Rights Reserved   网站地图