得PreparedStatement向数据库提交的SQL语句 SQL
/**
* 获得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("' ");
}
}