`
QuarterLifeForJava
  • 浏览: 176345 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

简单自动拼接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;
	}

}


其他参考:
		LineNumberReader read = new LineNumberReader(new BufferedReader(new FileReader("D://a.txt")));
		String line = read.readLine();
		Matcher matcher = Pattern.compile("正则").matcher(line);
		matcher.useTransparentBounds(true).useAnchoringBounds(false);
		int pos = 0;
		int endPos = line.length();
		while (pos < endPos) {
			matcher.region(pos, endPos);
			if (matcher.lookingAt()) {
				//line = line.replace(matcher.group(), "a");
          //line = line.replaceAll(matcher.group(1), "20");
				System.out.println(matcher);
				pos = matcher.end();
			}
		}
		//System.out.println(line);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics