当前位置: 代码迷 >> SQL >> 简略自动拼接SQL语句
  详细解决方案

简略自动拼接SQL语句

热度:92   发布时间:2016-05-05 11:44:32.0
简单自动拼接SQL语句
import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author QuarterLifeForJava */public class Test{	public static void main(String[] args) {		System.out.println(testPrintSQL("H002",12,1009));		String sql = "SELECT rat.id,rat.sName,rat.dApplyDate,rat.tiRestType,rat.dStartDate,rat.dEndDate,rat.fInterval "+				 "FROM restapplytbl rat "+				 "WHERE rat.id IN"+				 "("+				 "	SELECT rt.iRestApplyId "+				 "	FROM restprocesstbl rt "+				 "	WHERE rt.id IN"+				 "	("+				 "		SELECT pmt.smissionid "+				 "		FROM pendingmissiontbl pmt "+				 "		WHERE pmt.imissionkindid=?"+				 "		AND pmt.imissionkinddetailsid=?"+				 "		AND pmt.smissionexecutor=?"+				 "	)"+				 ")";		String worknum = "H002";		int missionKindId = 12;		int missionKindDetailsId = 1009;		//顺序要对好		Object obj[] = new Object[]{missionKindId,missionKindDetailsId,worknum}; 		System.out.println(createSql(sql,obj));	}	//简单自动拼接SQL语句	public static String createSql(String sql, Object pargams[]) {		for (int i = 0; i < pargams.length; i++) {			Pattern p = Pattern.compile("\\?");			Matcher m = p.matcher(sql);			if (pargams[i] instanceof Integer) {				sql = m.replaceFirst(String.valueOf((int) pargams[i]));			} else if (pargams[i] instanceof Long) {				sql = m.replaceFirst(String.valueOf((Long) pargams[i]));			} else if (pargams[i] instanceof Float) {				sql = m.replaceFirst(String.valueOf((Float) pargams[i]));			} else if (pargams[i] instanceof Double) {				sql = m.replaceFirst(String.valueOf((Double) pargams[i]));			} else {				sql = m.replaceFirst("'" + (String) pargams[i] + "'");			}		}		return sql;	}		//简单示例	public static String testPrintSQL(String worknum, int missionKindId,int missionKindDetailsId){		String sql = "SELECT rat.id,rat.sName,rat.dApplyDate,rat.tiRestType,rat.dStartDate,rat.dEndDate,rat.fInterval "+					 "FROM restapplytbl rat "+					 "WHERE rat.id IN"+					 "("+					 "	SELECT rt.iRestApplyId "+					 "	FROM restprocesstbl rt "+					 "	WHERE rt.id IN"+					 "	("+					 "		SELECT pmt.smissionid "+					 "		FROM pendingmissiontbl pmt "+					 "		WHERE pmt.imissionkindid="+missionKindId+					 "		AND pmt.imissionkinddetailsid="+missionKindDetailsId+					 "		AND pmt.smissionexecutor="+"'"+worknum+"'"+					 "	)"+					 ")";		return sql;	}}
  相关解决方案