improved sql format output

This commit is contained in:
shaojin.wensj
2015-07-11 14:27:29 +08:00
parent 60b7139911
commit b36374f7bf
26 changed files with 612 additions and 35 deletions
@@ -226,7 +226,10 @@ public class SQLUtils {
public static String format(String sql, String dbType, List<Object> parameters) {
try {
List<SQLStatement> statementList = toStatementList(sql, dbType);
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
parser.setKeepComments(true);
List<SQLStatement> statementList = parser.parseStatementList();
return toSQLString(statementList, dbType, parameters);
} catch (ParserException ex) {
@@ -247,10 +250,27 @@ public class SQLUtils {
}
for (int i = 0; i < statementList.size(); i++) {
SQLStatement stmt = statementList.get(i);
if (i > 0) {
out.append(";\n");
visitor.println(";");
}
List<String> comments = stmt.getBeforeCommentsDirect();
if (comments != null){
for(String comment : comments) {
visitor.println(comment);
}
}
stmt.accept(visitor);
if (i == statementList.size() - 1) {
Boolean semi = (Boolean) stmt.getAttribute("format.semi");
if (semi != null && semi.booleanValue()) {
visitor.println();
visitor.print(";");
}
}
statementList.get(i).accept(visitor);
}
return out.toString();