SqlBuilder.InsertIntoNextStep does not support building
Closed this issue · 1 comments
qichangleixin commented
This is how I currently implement dynamic insertion
`
public static GeneralInsertStatementProvider buildInsert(FormDynamicInsert formDynamicInsert) {
SqlTable sqlTable = SqlTable.of(formDynamicInsert.getTableName());
SqlBuilder.InsertIntoNextStep insertIntoNextStep = SqlBuilder.insertInto(sqlTable);
for(int i=0;i<formDynamicInsert.getFields().size()-2; i++) {
FormDynamicInsert.InsertField insertField = formDynamicInsert.getFields().get(i);
insertIntoNextStep.set(sqlTable.column(insertField.getField())).toValue(insertField.getValue());
}
FormDynamicInsert.InsertField lastInsertField = formDynamicInsert.getFields().get(formDynamicInsert.getFields().size()-1);
return insertIntoNextStep.set(sqlTable.column(lastInsertField.getField())).toValue(lastInsertField.getValue())
.build().render(RenderingStrategies.MYBATIS3);
}
`
But I want to achieve it this way
jeffgbutler commented
You can do it by directly using the GeneralInsertDSL.
public static GeneralInsertStatementProvider buildInsert(FormDynamicInsert formDynamicInsert) {
SqlTable sqlTable = SqlTable.of(formDynamicInsert.getTableName());
GeneralInsertDSL dsl = GeneralInsertDSL.insertInto(sqlTable);
formDynamicInsert.getFields().forEach(f -> {
dsl.set(f.getField()).toValue(f.getValue());
});
return dsl.build.render(RenderingStrategies.MYBATIS3);
}