⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insertaction.java

📁 银行8583报文分析源码,供考参.程序输出XML再交给采集程序入数据库
💻 JAVA
字号:
package com.sunyard.dataanalyze;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class InsertAction {
	// public void action(Map map) {
/*	public void action(Map map , Map fieldMapping ) {
		StringBuffer sql = new StringBuffer("INSERT INTO fl_flow_tb(");
		StringBuffer value = new StringBuffer(" VALUES(");
		StringBuffer values = new StringBuffer("");
		Set keySet = map.keySet();
		Set mapkeyTypeSet = PackageConstants.getFieldTypeMap().keySet();
		// Map fieldMapping = PackageConstants.getFieldMapping();
		Iterator it = keySet.iterator();
		while (it.hasNext()) {
			String param = ((String) it.next());
			if (PackageConstants.getFieldMapping().containsKey(
					param.toUpperCase())) {
				String flowFieldName = (String) PackageConstants
						.getFieldMapping().get(param.toUpperCase());// fm.getFlowField();
				if (sql.toString().indexOf(flowFieldName)<0.contains(flowFieldName)) {// 当SQL语句中没有该字段时才加入
					String paramType = (String) PackageConstants
							.getFieldTypeMap().get(flowFieldName);//取得字段类型
					System.out.println("===paramType==="+paramType+"=====flowFieldName===="+flowFieldName);
					if (paramType.indexOf("int")>=0contains("int")
							|| paramType.indexOf("double")>=0.contains("double")
							|| paramType.indexOf("decimal")>=0.contains("decimal")) {
						
						String tempValue = (String) map.get(param);
						//判断是否是数字
						String regEx="[0-9]+.[0-9]+"; 
						Pattern p=Pattern.compile(regEx);
						Matcher m=p.matcher(tempValue);
						if(!m.matches())
							continue;
						System.out.println(tempValue);
						if (flowFieldName.equalsIgnoreCase("amount"))
							values.append(((new Double(tempValue))
									.doubleValue() * 100)
									+ ",");
						else
							values.append(map.get(param) + ",");
						sql.append(flowFieldName + " ,");
					} else{
						values.append("'" + map.get(param) + "',");
						sql.append(flowFieldName + " ,");
					}
				}
			}
		}
		Iterator notnullIt = PackageConstants.getNotNullableFieldMap().keySet()
				.iterator();
		while (notnullIt.hasNext()) {
			String tempKey = (String) notnullIt.next();
			String tempParamType = (String) PackageConstants
					.getNotNullableFieldMap().get(tempKey);
			if (sql.toString().indexOf(tempKey)<0contains(tempKey)) {
				sql.append(tempKey + " ,");
				if (tempParamType.indexOf("int")>=0contains("int")
						|| tempParamType.indexOf("double")>=0.contains("double")
						|| tempParamType.indexOf("decimal")>=0.contains("decimal"))
					values.append("0 ,");
				else
					values.append("'',");
			}
		}
		String temp1 = sql.substring(0, sql.length() - 1);
		String temp2 = "";
		long t = System.currentTimeMillis()
				- ((SQLList) PackageConstants.getSQLs()).getLastCommitTime();
		if (!values.equals("")) {
			temp2 = values.substring(0, values.length() - 1);
			temp1 = temp1 + ")";
			temp1 = temp1 + value.toString() + temp2 + ")";
			System.out.println(temp1);
			if (PackageConstants.getSQLs().size() >= PackageConstants.COMMIT_NUM) {
				ConnectionFactory cf = new ConnectionFactoryImpl();
				Connection conn = cf.getConnection(PackageConstants.FLOW_DB);
				Statement stmt = null;
				PackageConstants.getSQLs().add(temp1);
				int times = PackageConstants.getSQLs().size();
				try {
					stmt = conn.createStatement();
					for (int i = 0; i < PackageConstants.getSQLs().size(); i++) {
						stmt.addBatch((String) (PackageConstants.getSQLs()
								.get(i)));
					}
					stmt.executeBatch();
					stmt.close();
					conn.close();
					PackageConstants.log.info("将" + times + "条记录插入数据库");
				} catch (SQLException e) {
					e.printStackTrace();
					StackTraceElement st[] =e.getStackTrace();
					PackageConstants.log.error(e.getMessage());
				}
				PackageConstants.getSQLs().clear();
				((SQLList) PackageConstants.getSQLs()).setLastCommitTime(System
						.currentTimeMillis());

			} else if (((SQLList) PackageConstants.getSQLs()).size() > 0
					&& System.currentTimeMillis()
							- ((SQLList) PackageConstants.getSQLs())
									.getLastCommitTime() >= PackageConstants.LIMIT_COMMIT_TIME) {
				ConnectionFactory cf = new ConnectionFactoryImpl();
				Connection conn = cf.getConnection(PackageConstants.FLOW_DB);
				Statement stmt = null;
				PackageConstants.getSQLs().add(temp1);
				try {
					stmt = conn.createStatement();
					int times = PackageConstants.getSQLs().size();
					System.out.println("-------times-------" + times);
					for (int i = 0; i < times; i++) {
						stmt.addBatch((String) (PackageConstants.getSQLs()
								.get(i)));
					}
					stmt.executeBatch();
					stmt.close();
					conn.close();
					PackageConstants.log.info("将" + times + "条记录插入数据库");
				} catch (SQLException e) {
					PackageConstants.log.error(e.getMessage());
				}
				PackageConstants.getSQLs().clear();
				((SQLList) PackageConstants.getSQLs()).setLastCommitTime(System
						.currentTimeMillis());
			} else {
				PackageConstants.getSQLs().add(temp1);
			}
		}
	}*/
	
	public void action(String tradeNo, Map map){
		StringBuffer sql = new StringBuffer("INSERT INTO fl_flow_tb(");
		StringBuffer value = new StringBuffer(" VALUES(");
		StringBuffer values = new StringBuffer("");
		Set keySet = map.keySet();
		/*System.out.println();
		System.out.println("====tradeNo==="+tradeNo);*/
		Set mapkeyTypeSet = PackageConstants.getFieldTypeMap().keySet();  
		Map fieldMapping = (Map)FieldMappingCfg.getFieldMap().get(tradeNo);
		// Map fieldMapping = PackageConstants.getFieldMapping();
		Iterator it = keySet.iterator();
		if(null != fieldMapping){
			while (it.hasNext()) {
				String param = ((String) it.next());
				if (fieldMapping.containsKey(
						param.toUpperCase())) {
					String flowFieldName = (String) fieldMapping.get(param.toUpperCase());// fm.getFlowField();
					if (sql.toString().indexOf(flowFieldName)<0/*.contains(flowFieldName)*/) {// 当SQL语句中没有该字段时才加入
						String paramType = (String) PackageConstants
								.getFieldTypeMap().get(flowFieldName);//取得字段类型
						//System.out.println("===paramType==="+paramType+"=====flowFieldName===="+flowFieldName);
						if (paramType.indexOf("int")>=0/*contains("int")*/
								|| paramType.indexOf("double")>=0/*.contains("double")*/
								|| paramType.indexOf("decimal")>=0/*.contains("decimal")*/) {
							
							String tempValue = (String) map.get(param);
							//判断是否是数字
							String regEx="[0-9]+.[0-9]+"; 
							Pattern p=Pattern.compile(regEx);
							Matcher m=p.matcher(tempValue);
							if(!m.matches())
								continue;
							//System.out.println(tempValue);
							if (flowFieldName.equalsIgnoreCase("amount"))
								values.append(((new Double(tempValue))
										.doubleValue() * 100)
										+ ",");
							else
								values.append(map.get(param) + ",");
							sql.append(flowFieldName + " ,");
						} else{
							values.append("'" + map.get(param) + "',");
							sql.append(flowFieldName + " ,");
						}
					}
				}
			}
			Iterator notnullIt = PackageConstants.getNotNullableFieldMap().keySet()
					.iterator();
			while (notnullIt.hasNext()) {
				String tempKey = (String) notnullIt.next();
				String tempParamType = (String) PackageConstants
						.getNotNullableFieldMap().get(tempKey);
				if (sql.toString().indexOf(tempKey)<0/*contains(tempKey)*/) {
					sql.append(tempKey + " ,");
					if (tempParamType.indexOf("int")>=0/*contains("int")*/
							|| tempParamType.indexOf("double")>=0/*.contains("double")*/
							|| tempParamType.indexOf("decimal")>=0/*.contains("decimal")*/)
						values.append("0 ,");
					else
						values.append("'',");
				}
			}
			String temp1 = sql.substring(0, sql.length() - 1);
			String temp2 = "";
			long t = System.currentTimeMillis()
					- ((SQLList) PackageConstants.getSQLs()).getLastCommitTime();
			if (!values.equals("")) {
				temp2 = values.substring(0, values.length() - 1);
				temp1 = temp1 + ")";
				temp1 = temp1 + value.toString() + temp2 + ")";
				System.out.println(temp1);
				if (PackageConstants.getSQLs().size() >= PackageConstants.COMMIT_NUM) {
					ConnectionFactory cf = new ConnectionFactoryImpl();
					Connection conn = cf.getConnection(PackageConstants.FLOW_DB);
					Statement stmt = null;
					PackageConstants.getSQLs().add(temp1);
					int times = PackageConstants.getSQLs().size();
					try {
						stmt = conn.createStatement();
						for (int i = 0; i < PackageConstants.getSQLs().size(); i++) {
							stmt.addBatch((String) (PackageConstants.getSQLs()
									.get(i)));
						}
						stmt.executeBatch();
						stmt.close();
						conn.close();
						PackageConstants.log.info("将" + times + "条记录插入数据库");
					} catch (SQLException e) {
						e.printStackTrace();
						StackTraceElement st[] =e.getStackTrace();
						PackageConstants.log.error(e.getMessage());
					}
					PackageConstants.getSQLs().clear();
					((SQLList) PackageConstants.getSQLs()).setLastCommitTime(System
							.currentTimeMillis());
	
				} else if (((SQLList) PackageConstants.getSQLs()).size() > 0
						&& System.currentTimeMillis()
								- ((SQLList) PackageConstants.getSQLs())
										.getLastCommitTime() >= PackageConstants.LIMIT_COMMIT_TIME) {
					ConnectionFactory cf = new ConnectionFactoryImpl();
					Connection conn = cf.getConnection(PackageConstants.FLOW_DB);
					Statement stmt = null;
					PackageConstants.getSQLs().add(temp1);
					try {
						stmt = conn.createStatement();
						int times = PackageConstants.getSQLs().size();
						for (int i = 0; i < times; i++) {
							stmt.addBatch((String) (PackageConstants.getSQLs()
									.get(i)));
						}
						stmt.executeBatch();
						stmt.close();
						conn.close();
						PackageConstants.log.info("将" + times + "条记录插入数据库");
					} catch (SQLException e) {
						PackageConstants.log.error(e.getMessage());
					}
					PackageConstants.getSQLs().clear();
					((SQLList) PackageConstants.getSQLs()).setLastCommitTime(System
							.currentTimeMillis());
				} else {
					PackageConstants.getSQLs().add(temp1);
				}
			}
		}
	}
	
	/*public Map findFieldMapByTradeNo(String tradeNo) {
		Map fieldMap = new HashMap();
		Iterator it = (PackageConstants.getFieldMapping()).keySet().iterator();
		while (it.hasNext()) {
			String tempTradeNo = (String) it.next();
			if (tempTradeNo.equals(tradeNo)) {
				List objList = (List) PackageConstants.getFieldMapping().get(
						tradeNo);
				for (int i = 0; i < objList.size(); i++) {
					FieldMapping fieldMapping = (FieldMapping) objList.get(i);
					fieldMap.put(fieldMapping.getPackageField(), fieldMapping
							.getFlowField());
				}
			}
		}
		return fieldMap;
	}*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -