From 9ad437b6970aa72efd146c9bffd3475a5ab80748 Mon Sep 17 00:00:00 2001 From: moparisthebest Date: Tue, 22 May 2018 00:54:33 -0400 Subject: [PATCH] Can never cache PreparedStatement with bind in lists --- .../com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java b/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java index 1196a58..03e8877 100644 --- a/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java +++ b/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/JdbcMapperProcessor.java @@ -462,6 +462,7 @@ public class JdbcMapperProcessor extends AbstractProcessor { } } final boolean notBindInList = !inListBindParams.isEmpty() && databaseType != JdbcMapper.DatabaseType.BIND; + final boolean bindInList = !inListBindParams.isEmpty() && databaseType == JdbcMapper.DatabaseType.BIND; final SQLParser parsedSQl = ManualSQLParser.getSQLParser(sql, parser, sqlStatement); // now implementation @@ -474,7 +475,7 @@ public class JdbcMapperProcessor extends AbstractProcessor { for (final SpecialVariableElement param : inListBindParams.values()) setArray(w, databaseType, arrayNumberTypeName, arrayStringTypeName, param); w.write("\t\t\tps = "); - final boolean cachePreparedStatements = sql.cachePreparedStatement().combine(defaultCachePreparedStatements); + final boolean cachePreparedStatements = sql.cachePreparedStatement().combine(defaultCachePreparedStatements) && !bindInList; if (cachePreparedStatements) { w.write("this.prepareStatement("); w.write(Integer.toString(cachedPreparedStatements)); @@ -490,7 +491,7 @@ public class JdbcMapperProcessor extends AbstractProcessor { w.write("\");\n"); // now bind parameters - if(!inListBindParams.isEmpty() && databaseType == JdbcMapper.DatabaseType.BIND) { + if(bindInList) { w.write("\t\t\tint psParamCount = 0;\n"); for (final VariableElement param : bindParams) setObject(w, "++psParamCount", param);