d
解析sql
public Map<Integer, String> parseSql(String sql, DbType dbType) {
List<SQLStatement> statementList = SQLUtils.parseStatements(sql, dbType);
Map<Integer, String> sqlMap = new HashMap<Integer,String>();
for (SQLStatement stmt : statementList) {
if (stmt instanceof SQLInsertStatement) {
SQLInsertStatement insertStatement = (SQLInsertStatement) stmt;
List<SQLInsertStatement.ValuesClause> valuesClauses = insertStatement.getValuesList();
for (int i = 0; i < insertStatement.getColumns().size(); i++) {
String columnName = insertStatement.getColumns().get(i).toString();
SQLExpr columnValue = valuesClauses.get(0).getValues().get(i);
sqlMap.put(i,columnName);
}
}
}
return sqlMap;
}
变更sql
public static void main(String[] args) {
String sql ="INSERT INTO student ( user_name, email ) VALUES ( ?,? )";
List<SQLStatement> stmtList = SQLUtils.parseStatements(sql, DbType.mysql);
for (SQLStatement stmt : stmtList) {
if (stmt instanceof SQLInsertStatement) {
SQLInsertStatement insert = (SQLInsertStatement) stmt;
// 添加字段和值
insert.addColumn(SQLUtils.toSQLExpr("user_name_1", DbType.mysql));
// 创建新的值子句
SQLInsertStatement.ValuesClause values = insert.getValues();
values.addValue(SQLUtils.toSQLExpr("?", DbType.mysql));
// 输出修改后的SQL语句
String modifiedSql = SQLUtils.toMySqlString(insert);
System.out.println(modifiedSql);
}
}
}