All Versions
155
Latest Version
Avg Release Cycle
27 days
Latest Release
-

Changelog History
Page 5

  • v3.4.0 Changes

    ๐Ÿš€ NOTE: this release's git tags are missing due to maintainer error!

    • ๐Ÿ†• New API
      • StatementException.getShortMessage
      • SqlStatements.setQueryTimeout(int) to configure the JDBC Statement queryTimeout.
    • ๐Ÿ› Bug Fixes
      • Bridge methods cause SqlObject exceptions to get wrapped in InvocationTargetException
      • Ignore static methods on SqlObject types
    • ๐Ÿ‘Œ Improvements
      • Handle null values in defined attributes
  • v3.3.0 Changes

    • ๐Ÿ†• New API
      • SerializableTransactionRunner.setOnFailure(), setOnSuccess() methods allow callbacks to be registered to observe transaction success and failure.
      • JdbiRule.migrateWithFlyway() chaining method to run Flyway migrations on the test database prior to running tests.
      • @UseStringSubstitutorTemplateEngine SQL object annotation.
      • @Beta annotation to identify non-final APIs.
      • Application developers are invited to try out beta APIs and provide feedback to help us identify weaknesses and make improvements before new APIs are made final.
      • Library maintainers are discouraged from using beta APIs, as this might lead to ClassNotFoundExceptions or NoSuchMethodExceptions at runtime whenever beta APIs change.
    • ๐Ÿ‘Œ Improvements
      • Added some extra javadoc to SqlLogger
      • @UseTemplateEngine now works with MessageFormatTemplateEngine and StringSubstitutorTemplateEngine
    • ๐Ÿ› Bug fixes
      • SqlStatement.bindMethods() (and @BindMethods) now selects the correct method when the method return type is generic.
      • mapToMap() no longer throws an exception on empty resultsets when ResultProducers.allowNoResults is true
    • ๐Ÿ’ฅ Breaking changes
      • Remove JdbiRule.createJdbi() in favor of createDataSource(). This was necessary to facilitate the migrateWithFlyway() feature above, and pave the way for future additions.
      • Remove SqlLogger.wrap() added in 3.2.0 from public API.
      • Convert MessageFormatTemplateEngine from an enum to a plain class with a public constructor. The INSTANCE enum constant has been likewise removed.
      • Remove StringSubstitutorTemplateEngine.defaults(), .withCustomizer() factory methods, in favor of the corresponding public constructors.
  • v3.2.1 Changes

    • ๐Ÿ›  Fix IllegalArgumentException "URI is not hierarchical" in FreemarkerSqlLocator.
  • v3.2.0 Changes

    • ๐Ÿ†• New modules:
      • jdbi3-testing - JdbiRule test rule for JUnit tests
      • jdbi3-freemarker - render SQL templates using FreeMarker
      • jdbi3-commons-text - render SQL templates using Apache commons-text StringSubstitutor
      • jdbi3-sqlite - plugin for use with SQLite database
    • ๐Ÿ†• New API
      • @SqlScript annotation to execute multiple statements
      • SqlLogger for logging queries, timing, and exceptions. Replacing TimingCollector, which is now deprecated
      • Add ResultProducers.allowNoResults configuration option in case you may or may not get a result set
      • MessageFormatTemplateEngine template engine, renders SQL using java.text.MessageFormat
      • SqliteDatabaseRule test rule (in jdbi3-core test jar)
    • ๐Ÿ‘Œ Improvements
      • @MaxRows.value() may now be omitted when used as a parameter annotation
      • SerializableTransactionRunner 'max retries' handling throws more meaningful exceptions
      • Postgres operators like '?' and '?|' may now be used without being mistaken for a positional parameter. Escape them in your SQL statements as '??' and '??|', respectively.
      • Support for binding OptionalInt, OptionalLong, and OptionalDouble parameters.
    • ๐Ÿ› Bug fixes:
      • SqlObject default methods now work in JDK 9
      • SqlObject no longer gets confused about result types due to bridge methods
      • StringTemplate no longer shares template groups across threads, to work around concurrency issues in StringTemplate project
      • DefineStatementLexer handles predicates that look like definitions better. No more errors on unmatched "<" when you really meant "less than!"
      • LocalDate binding should store the correct date when the server and database are running in different time zones.
  • v3.1.1 Changes

    • ๐Ÿ‘Œ Improve IBM JDK compatibility with default methods
    • ๐Ÿ‘ Allow non-public SqlObject types!!!
    • ๐Ÿ›  Fix some ThreadLocal and StringTemplate leaks
  • v3.1.0 Changes

    • The strict transaction handling check in Handle.close() may be disabled via getConfig(Handles.class).setForceEndTransactions(false).
    • ๐Ÿ‘ StringTemplate SQL locator supports StringTemplate groups importing from other groups.
    • ๐Ÿ†• New RowReducer interface and related APIs make it simple to reduce master-detail joins into a series of master objects with the detail objects attached. See:
      • RowReducer interface
      • LinkedHashMapRowReducer abstract implementation for 90% of cases
      • ResultBearing.reduceRows(RowReducer)
      • @UseRowReducer SQL Object annotation
    • ๐Ÿ›  Fixed bug in PreparedBatch preventing batches from being reusable.
    • โž• Additional Kotlin convenience methods to avoid adding ".java" on every Kotlin type:
      • Jdbi.withExtension(KClass, ExtensionCallback)
      • Jdbi.useExtension(KClass, ExtensionConsumer)
      • Jdbi.withExtensionUnchecked(KClass, callback)
      • Jdbi.useExtensionUnchecked(KClass, callback)
    • EnumMapper tries a case insensitive match if there's no exact match
    • ๐Ÿ‘ OracleReturning.returningDml() supports named parameters
    • ๐Ÿ›  Fixed regression in Postgres typed enum mapper, which caused a fallback on the Jdbi default enum mapper.
  • v3.0.1 Changes

    • ๐Ÿ‘ Kotlin mapper support for @Nested annotation
    • ReflectionMapperUtil utility class made public.
    • ๐Ÿ‘• collectInto() and SQL Object return type support for OptionalInt, OptionalLong, and OptionalDouble, and Vavr Option.
    • ๐Ÿ†• New jdbi3-sqlite plugin with SQLite-specific binding and column mapping for java.net.URL.
    • โ†ช Workaround for multithreaded race condition loading StringTemplate STGroups and templates.
    • Column mapper for Vavr Option.
  • v3.0.0 Changes

    • [breaking] Added ConfigRegistry parameter to SqlLocator.locate() method.
  • v3.0.0-rc2 Changes

    • Row and column mapper for Optional types
    • Binding of nested attributes e.g. ":user.address.city" with bindBean(), bindMethods(), bindFields(), as well as @BindBean, @BindMethods, and @BindFields in SQL objects.
    • Mapping of nested attributes with BeanMapper, ConstructorMapper, and FieldMapper, using the @Nested annotation.
    • SQL Objects inherit class annotations from supertypes.
    • ๐Ÿ’… bindList() and @BindList now follow the parameter naming style of the active SqlParser, via the new SqlParser.nameParameter() method. e.g. ":foo" for ColonPrefixSqlParser, vs "#foo" for HashPrefixSqlParser.
  • v3.0.0-rc1 Changes