列印全部的sql語句,會把引數換成真正的值
阿新 • • 發佈:2019-01-10
import java.util.Date;
import java.util.List;
/**
* @author 熊浪
* @建立時間2016年9月21日
* @Email [email protected]
* @此類的作用 獲取完整的sql語句
*/
public class PrintCompleteSql {
/**
*
* @param keys 按順序新增的值
* @param sql 包含?引數的sql語句
* @return
*/
public static String getSql(Object[] keys, String sql) {
// 1 如果沒有引數,說明是不是動態SQL語句
int paramNum = 0;
if (null != keys)
paramNum = keys.length;
if (1 > paramNum)
return sql;
// 2 如果有引數,則是動態SQL語句
StringBuffer returnSQL = new StringBuffer();
String[] subSQL = sql.split("\\?");
for (int i = 0; i < paramNum; i++) {
if (keys[i] instanceof Integer) {
returnSQL.append(subSQL[i]).append(" ").append(keys[i])
.append(" ");
} else if (keys[i] instanceof Date) {
returnSQL
.append(subSQL[i])
.append(" '")
.append(DatetimeUtil.formatDate((java.util.Date) keys[i])).append("' ");
} else {
returnSQL.append(subSQL[i]).append(" '").append(keys[i])
.append("' ");
}
}
returnSQL.append(")");
return returnSQL.toString();
}