From e1db9642f8c58b248c754ae018840ad0f0185cb9 Mon Sep 17 00:00:00 2001 From: chenlw <874313221@qq.com> Date: Mon, 21 Nov 2016 16:33:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=A1=B5=E9=87=8D=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/dao/mapper/data-details-mapper.xml | 103 ++++++---------- src/com/platform/entities/PagerOptions.java | 8 +- src/com/platform/glusterfs/SetVolume.java | 2 +- .../service/impl/DataInfoServiceImp.java | 14 ++- .../ThreadExtractStandardSqlServer.java | 14 ++- .../platform/utils/page/PageInterceptor.java | 114 +++++++++--------- 6 files changed, 123 insertions(+), 132 deletions(-) diff --git a/src/com/dao/mapper/data-details-mapper.xml b/src/com/dao/mapper/data-details-mapper.xml index 63597d28..8e8d0d73 100644 --- a/src/com/dao/mapper/data-details-mapper.xml +++ b/src/com/dao/mapper/data-details-mapper.xml @@ -5,94 +5,67 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - + + + + - AND data_details.data_type=#{dataType,jdbcType=VARCHAR} + AND data_details.data_type=#{dataType} - AND data_details.mark=#{mark,jdbcType=VARCHAR} + AND data_details.mark=#{mark} AND - data_details.submitted_batch=#{submittedBatch,jdbcType=VARCHAR} + data_details.submitted_batch=#{submittedBatch} - AND data_details.city_name=#{cityName,jdbcType=VARCHAR} + AND data_details.city_name=#{cityName} AND - data_details.district_name=#{districtName,jdbcType=VARCHAR} + data_details.district_name=#{districtName} - AND data_details.data_version=#{dataVersion,jdbcType=INTEGER} + AND data_details.data_version=#{dataVersion} - AND data_details.system_name=#{systemName,jdbcType=VARCHAR} + AND data_details.system_name=#{systemName} - AND data_details.data_year=#{dataYear,jdbcType=VARCHAR} + AND data_details.data_year=#{dataYear} - + - AND CONCAT(regionalism_code,system_code,city_name,district_name,system_name,data_year) LIKE CONCAT('%',CONCAT(#{item},'%')) + AND CONCAT(regionalism_code,system_code,city_name,district_name,system_name,data_year) LIKE CONCAT('%',CONCAT(${item},'%')) diff --git a/src/com/platform/entities/PagerOptions.java b/src/com/platform/entities/PagerOptions.java index 913f56b8..596d143b 100644 --- a/src/com/platform/entities/PagerOptions.java +++ b/src/com/platform/entities/PagerOptions.java @@ -1,5 +1,7 @@ package com.platform.entities; +import java.util.List; + import com.platform.utils.page.Page; @@ -30,7 +32,7 @@ public class PagerOptions extends Page{ private String keyQuery; //模糊查询字段 - private String[] array; + private List array; private String volumeType; //冷热区字段 @@ -125,14 +127,14 @@ public class PagerOptions extends Page{ /** * @return the array */ - public String[] getArray() { + public List getArray() { return array; } /** * @param array the array to set */ - public void setArray(String[] array) { + public void setArray(List array) { this.array = array; } diff --git a/src/com/platform/glusterfs/SetVolume.java b/src/com/platform/glusterfs/SetVolume.java index 6d3fb809..ade67ae5 100644 --- a/src/com/platform/glusterfs/SetVolume.java +++ b/src/com/platform/glusterfs/SetVolume.java @@ -108,7 +108,7 @@ public class SetVolume { List volumeNames = volumeInfo.showAllVolumeName(); if (!volumeNames.contains(volumeName)) { log.error("3801 " + volumeName + " is not exists !"); - return -1; +// return -1; } List mountPoints = volumeInfo.getVolumeMountPoint(volumeName); diff --git a/src/com/platform/service/impl/DataInfoServiceImp.java b/src/com/platform/service/impl/DataInfoServiceImp.java index a35e80ef..31676334 100644 --- a/src/com/platform/service/impl/DataInfoServiceImp.java +++ b/src/com/platform/service/impl/DataInfoServiceImp.java @@ -67,21 +67,25 @@ public class DataInfoServiceImp implements DataInfoService { alllist.removeAll(removelist); Object[] strs = alllist.toArray(); int length = strs.length; - String[] arrays = new String[length]; + List arrays = new ArrayList(); for (int i = 0; i < length; i++) { - arrays[i] = strs[i].toString(); + arrays.add(strs[i].toString()); } for (String version : removelist) { pagerOptions.setDataVersion(Integer.valueOf(version.replace("版本", ""))); } - if (arrays.length > 0) { + if (arrays.size() > 0) { pagerOptions.setArray(arrays); } if (null !=pagerOptions.getSubmittedBatch() && !"".equals(pagerOptions.getSubmittedBatch()) ) { pagerOptions.setSubmittedBatch("批次"+pagerOptions.getSubmittedBatch()); } - List result = dfdDao.getLimitedDataInfoByPage(pagerOptions); - int count = result.size(); + List result = null; + try{ + result = dfdDao.getLimitedDataInfoByPage(pagerOptions); + }catch(Exception e){ + log.error(e.getMessage()); + } // int count = dfdDao.getLimitedDataCount(pagerOptions); //获取总记录条数 // log.info("total colume " + count); // int offset = 0; diff --git a/src/com/platform/service/thread/ThreadExtractStandardSqlServer.java b/src/com/platform/service/thread/ThreadExtractStandardSqlServer.java index b47439cf..d4dd0192 100644 --- a/src/com/platform/service/thread/ThreadExtractStandardSqlServer.java +++ b/src/com/platform/service/thread/ThreadExtractStandardSqlServer.java @@ -185,8 +185,11 @@ public class ThreadExtractStandardSqlServer extends Thread{ +"JJFLNAME Varchar(255),ZJXZCODE Varchar(255),ZJXZNAME Varchar(255),JSBFFSNAME Varchar(255),SKR Varchar(255),SKRYH Varchar(255)," + "SKRZHZH Varchar(255),FKZHCODE Varchar(255),FKZHNAME Varchar(255),FKYHCODE Varchar(255),FKYHNAME Varchar(255),QSZHCODE Varchar(255)," + "QSZHNAME Varchar(255),QSYHCODE Varchar(255),QSYHNAME Varchar(255),JE Numeric(18,2), SFTK Varchar(255),NIAN Varchar(255),ZY Varchar(255))"; - - OracleConnector.execOracleSQL(conn, payCmd, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName()); + try{ + OracleConnector.execOracleSQL(conn, payCmd, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName()); + }catch(Exception e){ + + } } private void createExec(Connection conn, OracleConnectorParams oc) { @@ -196,8 +199,11 @@ public class ThreadExtractStandardSqlServer extends Thread{ + "JJFLNAME Varchar(255),ZBGLCSNAME Varchar(255),SZGLCODE Varchar(255),SZGLNAME Varchar(255),XMCODE Varchar(255),XMNAME Varchar(255),GZBZ Varchar(255)," + "JJBZ Varchar(255),CGBZ Varchar(255),ZFFSCODE Varchar(255),ZFFSNAME Varchar(255),JZZFBZ Varchar(255),ZBJE Numeric(18,2),ZBTJJE Numeric(18,2),ZBDJJE Numeric(18,2)," + "ZBKYJE Numeric(18,2),ZYZFBZ Varchar(255),BZ Varchar(255))"; - - OracleConnector.execOracleSQL(conn, execCmd, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName()); + try{ + OracleConnector.execOracleSQL(conn, execCmd, Configs.EXTRACT_STANDARD_LOG_LOCALTION + oc.getName()); + }catch(Exception e){ + + } } } diff --git a/src/com/platform/utils/page/PageInterceptor.java b/src/com/platform/utils/page/PageInterceptor.java index 942c0afd..5c0c7344 100644 --- a/src/com/platform/utils/page/PageInterceptor.java +++ b/src/com/platform/utils/page/PageInterceptor.java @@ -1,12 +1,26 @@ package com.platform.utils.page; +import java.sql.Connection; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.Properties; + -import java.util.Map; -import java.util.Properties; - -import org.apache.ibatis.plugin.Interceptor; -import org.apache.ibatis.plugin.Invocation; +import org.apache.ibatis.executor.Executor; +import org.apache.ibatis.executor.parameter.ParameterHandler; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.MappedStatement.Builder; +import org.apache.ibatis.mapping.ParameterMapping; +import org.apache.ibatis.mapping.SqlSource; +import org.apache.ibatis.plugin.Interceptor; +import org.apache.ibatis.plugin.Intercepts; +import org.apache.ibatis.plugin.Invocation; +import org.apache.ibatis.plugin.Plugin; +import org.apache.ibatis.plugin.Signature; +import org.apache.ibatis.session.ResultHandler; +import org.apache.ibatis.session.RowBounds; -import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -24,8 +38,10 @@ import org.apache.ibatis.plugin.Plugin; import org.apache.ibatis.plugin.Signature; import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.SystemMetaObject; +import org.apache.ibatis.scripting.defaults.DefaultParameterHandler; +import org.apache.log4j.Logger; -import com.platform.utils.Bean2MapUtils; +import com.platform.utils.Configs; @Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class}), @@ -33,6 +49,8 @@ import com.platform.utils.Bean2MapUtils; }) public class PageInterceptor implements Interceptor { + @SuppressWarnings("static-access") + public static Logger log = Configs.CONSOLE_LOGGER.getLogger(PageInterceptor.class); /** 存储所有语句名称 */ /* HashMap map_statement = new HashMap();*/ @@ -54,49 +72,21 @@ public class PageInterceptor implements Interceptor { // 分页参数作为参数对象parameterObject的一个属性 String sql = boundSql.getSql(); Page co=(Page)(boundSql.getParameterObject()); - @SuppressWarnings("unchecked") - Map map = Bean2MapUtils.convertBean(boundSql.getParameterObject()); - if (null == co) { - co = new Page(); - } - // 重写 Sql语句 + log.info(sql.replaceAll("\n", "").replaceAll("\t", "")); String countSql=concatCountSql(sql); -// while (countSql.endsWith(" ") || countSql.endsWith("\t") -// || countSql.endsWith("\r") || countSql.endsWith("\n")) { -// countSql = countSql.substring(0, countSql.length()-1); -// } - try{ - if(countSql.contains("?")) { - StringBuffer sbr = new StringBuffer(); - String[] item = countSql.split("\\?"); - for (int i = 0; i < item.length; i++) { - sbr.append(item[i]); - String[] s = item[i].split("\\."); - String[] re = s[s.length-1].split("\\="); - if(map.keySet().contains(re[re.length-1])){ - sbr.append(map.get(re[re.length-1])); - } - else { - sbr.append(" "); - } - } - countSql = sbr.toString(); - } - }catch(Exception e){ - e.printStackTrace(); - } - String pageSql=concatPageMySql(sql,co); -// -// System.out.println("重写的 count sql :"+countSql); -// System.out.println("重写的 select sql :"+pageSql); Connection connection = (Connection) invocation.getArgs()[0]; PreparedStatement countStmt = null; ResultSet rs = null; int totalCount = 0; try { - countStmt = connection.prepareStatement(countSql); + //绑定数据 + countStmt = connection.prepareStatement(countSql); + BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(), countSql, + boundSql.getParameterMappings(), boundSql.getParameterObject()); + setParameters(countStmt, mappedStatement, countBS, boundSql.getParameterObject()); + //执行 rs = countStmt.executeQuery(); if (rs.next()) { totalCount = rs.getInt(1); @@ -112,14 +102,18 @@ public class PageInterceptor implements Interceptor { e.printStackTrace(); } } - - metaStatementHandler.setValue("delegate.boundSql.sql", pageSql); //绑定count co.setTotleSize(totalCount); - co.setTotlePage(totalCount/co.getLimit()); - if (co.getCurrentPageNum() > co.getTotlePage()) { - co.setCurrentPageNum(co.getTotlePage()); + int totalPage = totalCount/co.getLimit(); + if (totalCount > totalPage*co.getLimit()) { + totalPage+=1; } + co.setTotlePage(totalPage); + if (co.getCurrentPageNum() > co.getTotlePage()) { + co.setCurrentPageNum(co.getTotlePage()); + } + String pageSql=concatPageMySql(sql,co); + metaStatementHandler.setValue("delegate.boundSql.sql", pageSql); } } @@ -135,9 +129,6 @@ public class PageInterceptor implements Interceptor { */ public String concatCountSql(String sql){ StringBuffer sb=new StringBuffer("select count(*) from "); -// StringBuffer sb=new StringBuffer("select count(*) from ("); -// sb.append(sql).append(") as a"); -// sql=sql.toLowerCase(); if(sql.lastIndexOf("order")>sql.lastIndexOf(")")){ sb.append(sql.substring(sql.indexOf("from")+4, sql.lastIndexOf("order"))); @@ -162,7 +153,12 @@ public class PageInterceptor implements Interceptor { int index = page.getCurrentPageNum(); if (index > 1) { index = index -1; - sb.append(" limit ").append(size*index).append(" , ").append(size); + if (page.getTotlePage() == page.getCurrentPageNum()) { + sb.append(" limit ").append(size*index).append(" , ").append(page.getTotleSize()-(size*index)); + } + else { + sb.append(" limit ").append(size*index).append(" , ").append(size); + } } else { sb.append(" limit ").append(0).append(" , ").append(size); @@ -187,8 +183,18 @@ public class PageInterceptor implements Interceptor { } - public void setPageCount(){ - - } + /** + * 对SQL参数(?)设值 + * @param ps + * @param mappedStatement + * @param boundSql + * @param parameterObject + * @throws SQLException + */ + private void setParameters(PreparedStatement ps, MappedStatement mappedStatement, BoundSql boundSql, + Object parameterObject) throws SQLException { + ParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement, parameterObject, boundSql); + parameterHandler.setParameters(ps); + } }