private String buildSQL(String sql, Class<?> entityType, List<String> columns, String[] split) { StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("UPDATE ") .append(EntityUtils.getTableName(entityType, configuration.getNameAdaptor())).append(" SET "); columns.forEach(c -> sqlBuilder.append(c).append(" = ?, ")); sqlBuilder.setLength(sqlBuilder.length() - 2); if (split.length == 2) { sqlBuilder.append(sql.contains(" WHERE ") ? " WHERE " : " where ").append(split[1]); } return sqlBuilder.toString(); }
@Override public void replace(Connection connection, MetaObject metaObject, MappedStatement mappedStatement, BoundSql boundSql) { SqlProvider provider = this.provider; if (provider == null || configuration.isMultipleDatasource()) { try { String databaseName = connection.getMetaData().getDatabaseProductName(); this.provider = provider = providerMap.get(databaseName); } catch (SQLException e) { throw new RuntimeException(e); } } if (provider != null) { provider.replace(connection, metaObject, mappedStatement, boundSql); } } }
if (configuration.isShowQueryWithParameters()) { List<ParameterMapping> parameterMappings = boundSql.getParameterMappings(); Object parameterObject = boundSql.getParameterObject(); Object proceed = invocation.proceed(); long time = stopWatch.getTime(); if (time > configuration.getSlowQueryThresholdInMillis()) { if (parameters.isEmpty()) { logger.error(String.format("[SLOW Query took %s ms] %s", time, sql)); logger.error(String.format("[SLOW Query took %s ms, Parameters: %s] %s ", time, parameters, sql)); BiConsumer<String, Long> slowSqlHandler = configuration.getSlowQueryHandler(); if (slowSqlHandler != null) { slowSqlHandler.accept(sql, time); } else if (configuration.isShowQuery()) { if (parameters.isEmpty()) { logger.info(String.format("[Query took %s ms] %s", time, sql));
(mappedStatement.getId().substring(0, mappedStatement.getId().lastIndexOf('.'))); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("INSERT INTO ").append(EntityUtils.getTableName(entityType, configuration.getNameAdaptor())); List<String> properties; if (candidateProperties.length == 0) { if (!selective || !configuration.isIterateSelectiveInBatch()) { properties = EntityUtils.getProperties(entity, selective); } else {
@Bean @ConditionalOnMissingBean public cn.mybatisboost.core.Configuration configuration() throws IllegalAccessException, InstantiationException { cn.mybatisboost.core.Configuration.Builder builder = cn.mybatisboost.core.Configuration.builder() .setMultipleDatasource(properties.isMultipleDatasource()) .setIterateSelectiveInBatch(properties.isIterateSelectiveInBatch()) .setShowQuery(properties.isShowQuery()) .setShowQueryWithParameters(properties.isShowQueryWithParameters()) .setSlowQueryThresholdInMillis(properties.getSlowQueryThresholdInMillis()); if (properties.getNameAdaptor() != null) { builder.setNameAdaptor(properties.getNameAdaptor().newInstance()); } else { builder.setNameAdaptor(new NoopNameAdaptor()); } if (properties.getSlowQueryHandler() != null) { builder.setSlowQueryHandler(properties.getSlowQueryHandler().newInstance()); } return builder.build(); }
private String buildSql(Class<?> entityType, List<String> columns, int batchSize, String additionalStatement) { StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("INSERT INTO ") .append(EntityUtils.getTableName(entityType, configuration.getNameAdaptor())); sqlBuilder.append(" ("); columns.forEach(c -> sqlBuilder.append(c).append(", ")); sqlBuilder.setLength(sqlBuilder.length() - 2); sqlBuilder.append(") VALUES "); for (int i = 0; i < batchSize; i++) { sqlBuilder.append("("); columns.forEach(c -> sqlBuilder.append("?, ")); sqlBuilder.setLength(sqlBuilder.length() - 2); sqlBuilder.append("), "); } sqlBuilder.setLength(sqlBuilder.length() - 2); sqlBuilder.append(additionalStatement); return sqlBuilder.toString(); } }
@Override public void replace(Connection connection, MetaObject metaObject, MappedStatement mappedStatement, BoundSql boundSql) { String sql = boundSql.getSql(); if (sql.contains("#t")) { Class<?> entityType = MapperUtils.getEntityTypeFromMapper (mappedStatement.getId().substring(0, mappedStatement.getId().lastIndexOf('.'))); metaObject.setValue("delegate.boundSql.sql", sql.replace("#t", EntityUtils.getTableName(entityType, configuration.getNameAdaptor()))); } }
@Override public void replace(Connection connection, MetaObject metaObject, MappedStatement mappedStatement, BoundSql boundSql) { String tableName = EntityUtils.getTableName(MapperUtils.getEntityTypeFromMapper (mappedStatement.getId().substring(0, mappedStatement.getId().lastIndexOf('.'))), configuration.getNameAdaptor()); metaObject.setValue("delegate.boundSql.sql", (mappedStatement.getId().endsWith("countAll") ? "SELECT COUNT(*) FROM " : "SELECT * FROM ") + tableName); }
@Override @SuppressWarnings("unchecked") public void replace(Connection connection, MetaObject metaObject, MappedStatement mappedStatement, BoundSql boundSql) { Class<?> entityType = MapperUtils.getEntityTypeFromMapper (mappedStatement.getId().substring(0, mappedStatement.getId().lastIndexOf('.'))); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("DELETE FROM ").append(EntityUtils.getTableName(entityType, configuration.getNameAdaptor())); Map<String, Object> parameterMap = (Map<String, Object>) boundSql.getParameterObject(); Object[] ids = (Object[]) parameterMap.get("param1"); parameterMap.clear(); if (ids.length > 0) { String idProperty = EntityUtils.getIdProperty(entityType); String idColumn = SqlUtils.normalizeColumn(idProperty, (boolean) metaObject.getValue("delegate.configuration.mapUnderscoreToCamelCase")); sqlBuilder.append(" WHERE ").append(idColumn).append(" IN ("); Arrays.stream(ids).forEach(c -> sqlBuilder.append("?, ")); sqlBuilder.setLength(sqlBuilder.length() - 2); sqlBuilder.append(')'); org.apache.ibatis.session.Configuration configuration = (org.apache.ibatis.session.Configuration) metaObject.getValue("delegate.configuration"); List<ParameterMapping> parameterMappings = new ArrayList<>(ids.length); for (int i = 0; i < ids.length; i++) { parameterMap.put(idProperty + i, ids[i]); parameterMappings.add(new ParameterMapping.Builder(configuration, idProperty + i, Object.class).build()); } metaObject.setValue("delegate.boundSql.parameterMappings", parameterMappings); metaObject.setValue("delegate.boundSql.sql", sqlBuilder.toString()); } }
(mappedStatement.getId().substring(0, mappedStatement.getId().lastIndexOf('.'))); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("DELETE FROM ").append(EntityUtils.getTableName(entityType, configuration.getNameAdaptor()));
(mappedStatement.getId().substring(0, mappedStatement.getId().lastIndexOf('.'))); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("UPDATE ").append(EntityUtils.getTableName(entityType, configuration.getNameAdaptor()));
(mappedStatement.getId().substring(0, mappedStatement.getId().lastIndexOf('.'))); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("SELECT * FROM ").append(EntityUtils.getTableName(entityType, configuration.getNameAdaptor()));
StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append(mappedStatement.getId().endsWith("count") ? "SELECT COUNT(*) FROM " : "SELECT * FROM ") .append(EntityUtils.getTableName(entityType, configuration.getNameAdaptor()));