1. 程式人生 > >列印全部的sql語句,會把引數換成真正的值

列印全部的sql語句,會把引數換成真正的值



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();
}