简单自动拼接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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值