class HikariJDBCParameterDecorator implements JDBCParameterDecorator<HikariDataSource> {

    @Override
    public HikariDataSource decorate(final HikariDataSource dataSource) {
        dataSource.getDataSourceProperties().setProperty("useServerPrepStmts", Boolean.TRUE.toString());
        dataSource.getDataSourceProperties().setProperty("cachePrepStmts", Boolean.TRUE.toString());
        dataSource.getDataSourceProperties().setProperty("prepStmtCacheSize", "250");
        dataSource.getDataSourceProperties().setProperty("prepStmtCacheSqlLimit", "2048");
        dataSource.getDataSourceProperties().setProperty("useLocalSessionState", Boolean.TRUE.toString());
        dataSource.getDataSourceProperties().setProperty("rewriteBatchedStatements", Boolean.TRUE.toString());
        dataSource.getDataSourceProperties().setProperty("cacheResultSetMetadata", Boolean.FALSE.toString());
        dataSource.getDataSourceProperties().setProperty("cacheServerConfiguration", Boolean.TRUE.toString());
        dataSource.getDataSourceProperties().setProperty("elideSetAutoCommits", Boolean.TRUE.toString());
        dataSource.getDataSourceProperties().setProperty("maintainTimeStats", Boolean.FALSE.toString());
        dataSource.getDataSourceProperties().setProperty("netTimeoutForStreamingResults", "0");
        dataSource.getDataSourceProperties().setProperty("tinyInt1isBit", Boolean.FALSE.toString());
        return new HikariDataSource(dataSource);
    }

}