日期:2014-05-16 浏览次数:20522 次
/**
?* 获得PreparedStatement向数据库提交的SQL语句
?*
?* @param sql:带占位符?的原始sql
?* @param params:参数数组
?* @return:要执行的sql语句
?*/
public static String getPreparedSQL(String sql, Object[] params) {
???????
????????// 1 如果没有参数,说明是不是动态SQL语句
??????? int paramNum = 0;
??????? if (null != params)
?????????????? paramNum = params.length;
?????? if (1 > paramNum)
????????????? return sql;
?
????????// 2 如果有参数,则是动态SQL语句
?????? StringBuffer returnSQL = new StringBuffer();
?
?????? String[] subSQL = sql.split("\\?");
?
?????? for (int i = 0; i < paramNum; i++) {
????????????? if (params[i] instanceof Integer) {
???????????????????? returnSQL.append(subSQL[i]).append(" ").append(params[i]) .append(" ");
????????????? } else if (params[i] instanceof Date) {
???????????????????? returnSQL.append(subSQL[i]).append(" '").append( DateUtils.strDateFormat((java.util.Date) params[i])) .append("' ");
????????????? } else {
???????????????????? returnSQL.append(subSQL[i]).append(" '").append(params[i]) .append("' ");
????????????? }
}