Java Code Examples for com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement#getValuesList()
The following examples show how to use
com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement#getValuesList() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: InsertParser.java From dts with Apache License 2.0 | 5 votes |
@Override public TableDataInfo getPresentValue(List<Object> sqlParamsList, MySqlInsertStatement parseSqlStatement, StatementAdapter statementAdapter, TableMetaInfo tableMetaInfo) throws SQLException { TableDataInfo txcTable = new TableDataInfo(); txcTable.setTableName(parseSqlStatement.getTableName().getSimpleName()); List<TxcLine> line = txcTable.getLine(); List<SQLInsertStatement.ValuesClause> valuesList = parseSqlStatement.getValuesList(); List<SQLExpr> columns = parseSqlStatement.getColumns(); for (SQLInsertStatement.ValuesClause valuesClause : valuesList) { List<SQLExpr> values = valuesClause.getValues(); TxcLine txcLine = new TxcLine(); for (int i = 0; i < columns.size(); i++) { TxcField txcField = new TxcField(); String columnName = SQLUtils.toSQLString(columns.get(i)).replace("\'", "").replace("`", "").trim(); txcField.setName(columnName); if (sqlParamsList != null && !sqlParamsList.isEmpty()) { if (columnName.equalsIgnoreCase(tableMetaInfo.getAutoIncrementPrimaryKey())) { sqlParamsList.add(i, getAutoIncrementPrimaryKeyValue(statementAdapter.getStatement())); } txcField.setValue(sqlParamsList.get(i)); } else { txcField.setValue(SQLUtils.toSQLString(values.get(i))); } txcField.setJdkValue(SerializeUtils.serialize(txcField.getValue())); txcLine.getFields().add(txcField); } line.add(txcLine); } return txcTable; }
Example 2
Source File: BatchInsertSequence.java From Mycat2 with GNU General Public License v3.0 | 4 votes |
@Override public void route(SystemConfig sysConfig, SchemaConfig schema, int sqlType, String realSQL, String charset, ServerConnection sc, LayerCachePool cachePool) { int rs = ServerParse.parse(realSQL); this.sqltype = rs & 0xff; this.sysConfig=sysConfig; this.schema=schema; this.charset=charset; this.sc=sc; this.cachePool=cachePool; try { MySqlStatementParser parser = new MySqlStatementParser(realSQL); SQLStatement statement = parser.parseStatement(); MySqlInsertStatement insert = (MySqlInsertStatement)statement; if(insert.getValuesList()!=null){ String tableName = StringUtil.getTableName(realSQL).toUpperCase(); TableConfig tableConfig = schema.getTables().get(tableName); String primaryKey = tableConfig.getPrimaryKey();//获得表的主键字段 SQLIdentifierExpr sqlIdentifierExpr = new SQLIdentifierExpr(); sqlIdentifierExpr.setName(primaryKey); insert.getColumns().add(sqlIdentifierExpr); if(sequenceHandler == null){ int seqHandlerType = MycatServer.getInstance().getConfig().getSystem().getSequenceHandlerType(); switch(seqHandlerType){ case SystemConfig.SEQUENCEHANDLER_MYSQLDB: sequenceHandler = IncrSequenceMySQLHandler.getInstance(); break; case SystemConfig.SEQUENCEHANDLER_LOCALFILE: sequenceHandler = IncrSequencePropHandler.getInstance(); break; case SystemConfig.SEQUENCEHANDLER_LOCAL_TIME: sequenceHandler = IncrSequenceTimeHandler.getInstance(); break; case SystemConfig.SEQUENCEHANDLER_ZK_DISTRIBUTED: sequenceHandler = DistributedSequenceHandler.getInstance(MycatServer.getInstance().getConfig().getSystem()); break; case SystemConfig.SEQUENCEHANDLER_ZK_GLOBAL_INCREMENT: sequenceHandler = IncrSequenceZKHandler.getInstance(); break; default: throw new java.lang.IllegalArgumentException("Invalid sequnce handler type "+seqHandlerType); } } for(ValuesClause vc : insert.getValuesList()){ SQLIntegerExpr sqlIntegerExpr = new SQLIntegerExpr(); long value = sequenceHandler.nextId(tableName.toUpperCase()); sqlIntegerExpr.setNumber(value);//插入生成的sequence值 vc.addValue(sqlIntegerExpr); } String insertSql = insert.toString(); this.executeSql = insertSql; } } catch (Exception e) { LOGGER.error("BatchInsertSequence.route(......)",e); } }
Example 3
Source File: DruidInsertParser.java From dble with GNU General Public License v2.0 | 4 votes |
private String convertInsertSQL(SchemaInfo schemaInfo, MySqlInsertStatement insert, String originSql, TableConfig tc) throws SQLNonTransientException { TableMeta orgTbMeta = ProxyMeta.getInstance().getTmManager().getSyncTableMeta(schemaInfo.getSchema(), schemaInfo.getTable()); if (orgTbMeta == null) return originSql; boolean isAutoIncrement = tc.isAutoIncrement(); StringBuilder sb = new StringBuilder(200); sb.append("insert "); if (insert.isIgnore()) { sb.append("ignore "); } sb.append("into `"); sb.append(schemaInfo.getTable()); sb.append("`"); List<SQLExpr> columns = insert.getColumns(); int autoIncrement = -1; int colSize; // insert without columns :insert into t values(xxx,xxx) if (columns == null || columns.size() <= 0) { if (isAutoIncrement) { autoIncrement = getIncrementKeyIndex(schemaInfo, tc.getIncrementColumn()); } colSize = orgTbMeta.getColumns().size(); } else { genColumnNames(tc, isAutoIncrement, sb, columns); colSize = columns.size(); if (isAutoIncrement) { getIncrementKeyIndex(schemaInfo, tc.getIncrementColumn()); autoIncrement = columns.size(); sb.append(",").append("`").append(tc.getIncrementColumn()).append("`"); colSize++; } sb.append(")"); } sb.append(" values"); String tableKey = StringUtil.getFullName(schemaInfo.getSchema(), schemaInfo.getTable()); List<ValuesClause> vcl = insert.getValuesList(); if (vcl != null && vcl.size() > 1) { // batch insert for (int j = 0; j < vcl.size(); j++) { if (j != vcl.size() - 1) appendValues(tableKey, vcl.get(j).getValues(), sb, autoIncrement, colSize).append(","); else appendValues(tableKey, vcl.get(j).getValues(), sb, autoIncrement, colSize); } } else { List<SQLExpr> values = insert.getValues().getValues(); appendValues(tableKey, values, sb, autoIncrement, colSize); } List<SQLExpr> dku = insert.getDuplicateKeyUpdate(); if (dku != null && dku.size() > 0) { genDuplicate(sb, dku); } return RouterUtil.removeSchema(sb.toString(), schemaInfo.getSchema()); }
Example 4
Source File: DruidInsertParser.java From Mycat2 with GNU General Public License v3.0 | 2 votes |
/** * 是否为批量插入:insert into ...values (),()...或 insert into ...select..... * @param insertStmt * @return */ private boolean isMultiInsert(MySqlInsertStatement insertStmt) { return (insertStmt.getValuesList() != null && insertStmt.getValuesList().size() > 1) || insertStmt.getQuery() != null; }
Example 5
Source File: RouterUtil.java From Mycat2 with GNU General Public License v3.0 | 2 votes |
/** * 是否为批量插入:insert into ...values (),()...或 insert into ...select..... * * @param insertStmt * @return */ private static boolean isMultiInsert(MySqlInsertStatement insertStmt) { return (insertStmt.getValuesList() != null && insertStmt.getValuesList().size() > 1) || insertStmt.getQuery() != null; }
Example 6
Source File: DruidInsertParser.java From dble with GNU General Public License v2.0 | 2 votes |
/** * insert into ...values (),()... or insert into ...select..... * * @param insertStmt insertStmt * @return is Multi-Insert or not */ private boolean isMultiInsert(MySqlInsertStatement insertStmt) { return (insertStmt.getValuesList() != null && insertStmt.getValuesList().size() > 1); }
Example 7
Source File: MySqlInsertParser.java From baymax with Apache License 2.0 | 2 votes |
/** * 是否为批量插入:insert into ...values (),()...或 insert into ...select..... * @param insertStmt * @return */ private boolean isMultiInsert(MySqlInsertStatement insertStmt) { return (insertStmt.getValuesList() != null && insertStmt.getValuesList().size() > 1) || insertStmt.getQuery() != null; }