All Versions
12
Latest Version
Avg Release Cycle
126 days
Latest Release
56 days ago

Changelog History
Page 1

  • v3.5.4

    February 03, 2020

    ✨ Enhancements:

    • You can now omit unnecessary @Results and @ConstructorArgs annotation. #1698

    🐛 Bug fixes:

    • Avoid invoking hashCode() method when setting auto-generated keys. #1719
    • Possible ResultMapException when using nested select. #1551
    • Possible incorrect TypeVariable resolution in TypeParameterResolver. #1794
    • Race condition in TypeHandlerRegistry. #1819

    There is no known backward incompatible change since 3.5.3.

    👀 Please see the 3.5.4 milestone page for the complete list of changes.

  • v3.5.3

    October 20, 2019

    ✨ Enhancements:

    • 👌 Support variable substitution in CDATA of included <sql />. #1615
    • 👌 Support default method invocation on JDK 14+8 or later. #1626
    • ⚠ Avoid illegal reflective access warning when invoking default mapper method. #1636
    • Ambiguous getter/setter now throws ReflectionException only when it is actually accessed. #1201

    🐛 Bug fixes:

    • 👻 Possible infinite loop when a SQL provider throws an exception. #1616
    • Unable to iterate Cursor if the next element is null. #1653
    • queryCursor() fails in streaming mode of MySQL Connector/J. #1654

    There is no known backward incompatible change since 3.5.2.

    👀 Please see the 3.5.3 milestone page for the complete list of changes.

  • v3.5.2

    July 15, 2019

    ✨ Enhancements:

    • 🏗 SQL builder now supports LIMIT, OFFSET #1521 and FETCH FIRST #1582.
    • 🏗 SQL builder now supports multi-row insert syntax #1333.
    • 0️⃣ A new property defaultNetworkTimeout has been added to the built-in data sources i.e. PooledDataSource and UnpooledDataSource #1527.
    • SQL provider annotations now takes value attribute which is an alias for type #1522.
    • You can now pass Java array to ArrayTypeHandler#setNonNullParameter()#1548.
    • You can reference single simple type unnamed parameter with any name in OGNL expressions #1487.
    • 🔧 A new configuration option defaultResultSetType is added #1056.

    🐛 Bugs:

    • 🏗 SQL provider method with a primitive parameter causes BuilderException #1604.
    • 🛠 Fixes a possible NullPointerException #1590.

    There is no known backward incompatible change since 3.5.1.

    👀 Please see the 3.5.2 milestone page for the complete list of changes.

  • v3.5.1

    April 07, 2019

    🐛 Bug fixes:

    • keyProperty specified with parameter name could cause ExecutorException. #1485
    • False positive error 'Ambiguous collection type ...' . #1472
    • EnumTypeHandler is not used when the enum has methods. #1489
    • Auto-mapping fails in a result map referenced from a constructor arg with columnPrefix. #1496
    • Constructor auto-mapping could fail when columnPrefix is specified in the parent result map. #1495
    • LocalTimeTypeHandler loses fractional seconds part. #1478
    • LocalDateTypeHandler and LocalDateTimeTypeHandler could return unexpected value. #1478

    ✨ Enhancements:

    • 📜 You can now return 'script' from a SQL provider. The returned script is parsed using the language driver specified by @Lang. #1391
    • You can now omit method attribute from SQL provider annotations when the provider method has the same name as the mapper method or its name is provideSql. #1279
    • You can now get databaseId in SQL providers. #1503
    • 0️⃣ The default type handler for LONGVARCHAR is changed from ClobTypeHandler to StringTypeHandler. This improves compatibility with SAP ASE. #1484

    There is a backward incompatible change.

    • 👍 Because of the fix for #1478 , LocalDateTypeHandler, LocalTimeTypeHandler and LocalDateTimeTypeHandler now require a JDBC driver that supports JDBC 4.2 API.
      👀 Also, these type handlers no longer work with Druid. See #1516
  • v3.5.0

    January 20, 2019

    MyBatis 3.5.0 requires Java 8 and later.

    ✨ Enhancements:

    • ⚠ Avoid 'Illegal reflective access' warning on JDK 9+. #1156
    • ➕ Added Automatic-Module-Name : org.mybatis #1199
    • 👌 Support java.util.Optional as return type of mapper method. #799
    • Avoid unnecessary wasNull() calls from the built-in type handlers. #1244
    • It is now possible to specify columnPrefix in constructor arguments. #968
    • 👌 Improved reliability when searching constructor for auto-mapping. #1277
    • 📦 It is now possible to access private, package private and protected members in OGNL expressions. #1258
    • 👻 Throw exception if the specified keyProperty is not found when assigning generated keys.  #1250
    • ➕ Added a type handler for SQLXML data type. #1221
    • 👍 Allow accessing private, package private and protected members in OGNL expression. #1258
    • <set /> tag now trims the leading comma. #21
    • Infer <case /> tag's resultType from the enclosing resultMap. #486
    • 👍 Allow specifying columnPrefix in constructor mapping. #968
    • 👻 Combination of @CacheNamespace and <cache-ref /> does not throw exception anymore. #1194
    • 👌 Support Log4J 2.6+. #1210
    • 👍 Slightly improved compatibility with drivers that only support JDBC 3 API. #1386
    • ⬆️ Upgraded testing framework to JUnit 5. #1425

    🐛 Bug fixes:

    • OffsetDateTimeTypeHandler, OffsetTimeTypeHandler and ZonedDateTimeTypeHandler loses time zone information. #1081
    • Avoid SQLException when using Cursor with Db2. #1345
    • 👀 Avoid exception when using Cursor with ReuseExecutor. #1351
    • RowBounds with out-of-range offset causes SQLException on DB2. #1355
    • 🌲 Specified logging implementation is not used in some classes. #1272
    • Unable to resolve javaType for <association />. #1381
    • Deeply nested (3+ levels) result map could cause IllegalArgumentException. #1176
    • Generic type parameter is not correctly resolved when the class hierarchy is deeper than 3 levels. #1260

    👀 Please see the 3.5.0 milestone page for the complete list of changes.

    🚀 Note that there are some backward incompatible changes since the last release 3.4.6.

    • 0️⃣ Specifying keyProperty is now mandatory when using useGeneratedKeys. If you relied on the implicit default value (="id"), generated keys will be silently ignored. #1198
    • 👍 Using Cursor now requires a driver that supports JDBC 4.1 API. #1351
    • If you extended org.apache.ibatis.type.BaseTypeHandler, you might need to add wasNull() check in your type handler. #1144
    • 0️⃣ The default resultSetType value has been changed from FORWARD_ONLY to UNSET. This is applied only to annotation based mappers (for XML based mappers, the default is/was UNSET). #1334
    • If you extended org.apache.ibatis.transaction.jdbc.JdbcTransaction for some reason, the property autoCommmit has been renamed to autoCommit. #941
  • v3.4.6

    March 11, 2018

    ✨ Enhancements:

    • Apply custom ResultHandler to CURSOR type OUT parameter. #493
    • Substitute variables in attribute values of included SQL fragments. #1069
    • BatchExecutor now closes each statement immediately after execution. #1110
    • It is now possible to use a static method as SQL provider. #1131
    • SQL provider method can now return CharSequence instead of String. #1134
    • ➕ Add resource path to the exception message when parsing XML mapper failed. #1172

    🐛 Bug fixes:

    • Registering type handler against HashMap causes ClassCastException. #1089
    • Unable to register TypeHandler once TypeHandlerRegistry.hasTypeHandler is called. #1177
    • Serializing and deserializing cached objects causes NullPointerException. #1084
    • Invalid error message 'Two methods with same method signature but not providing classes assignable?' in System.err. #929

    There should be no backward incompatible change since 3.4.5.
    👀 Follow this link to see the full list of changes.

  • v3.4.5

    August 20, 2017

    ✨ Enhancements:

    • 0️⃣ Make default enum type handler customizable. #971
    • 👉 Make mapper method and its interface type accessible to SqlProvider. #1055
    • 👍 Allow using configuration properties in SqlProvider. #1061
    • 🔀 Merge type handlers for JSR-310 (Java Date and Time API) into the core. #974

    🐛 Bug fixes:

    • The type handler registered for a common interface of enums was not applied correctly. #976
    • Lazy loading should not overwrite a property value set by user. #988
    • Prevent foreach xml tag from polluting the global context. #966
    • Some parameter names (e.g. 'size') can cause ClassCastException. #1031
    • ⚡️ Not all result sets are processed when UPDATE or INSERT is performed in between. #1036
    • With PostgreSQL, ExecutorException is thrown if useGeneratedKeys is enabled globally. #902

    There should be no backward incompatible change since 3.4.4.
    👀 Follow this link to see the full list of changes.

  • v3.4.4

    April 08, 2017

    🚀 This is no change since 3.4.3. Please see 3.4.3 release note

    🚀 There was an error in the 3.4.3 JAR on Meven Central and we had to release 3.4.4 to fix it.

  • v3.4.3

    April 07, 2017

    ✨ Enhancements:

    • 👍 Allow registering a type handler for a common interface of enums. #947
    • Share Jdbc3KeyGenerator and NoKeyGenerator instances #882
    • ⚡️ Building UPDATE JOIN statement by SQL Builder #903

    🐛 Bug fixes:

    • Failed to find a statement mapped to a super interface #481
    • 0️⃣ Default methods support on mappers, does not work for non-public mappers. #905
    • foreignColumns with multiple columns validation error #526
    • 🛠 Fix wrong registration logic for LanguageDriver #914
    • A boolean property should be able to have two getters: isX() and getX() #906
    • Possible unexpected auto-mapping #895
    • Excessive memory allocation for primitive arrays in nested resultmaps #927

    There should be no backward incompatible change [1].
    👀 Follow this link to see the full list of changes.

    👀 [1] It is possible that an incorrect result mapping previously worked because of the bug fixed in #895 stops working. Please see #1100 for the details.

  • v3.4.2

    January 03, 2017

    Here is a list of major enhancements in MyBatis 3.4.2.

    • 🆕 New option 'returnInstanceForEmptyRow' to control the behavior when a query returns a row with all columuns being null. #800
    • 👌 Support 'default methods' on mapper interfaces. #709
    • When no type handler is registered to a class, a type handler registered to its superclass can be used. #859
    • 🆕 New attributes properties is added to @CacheNamespace. #841
    • 🆕 New attributes name is added to @CacheNamespaceRef. #842
    • 👌 Support the mechanism for initializing a cache after set all properties. #816
    • 👍 Allow users to set default value in placeholders. #852
    • Auto-detecting type handlers newly added in version 1.0.2 of TypeHandlers-JSR310. #727 #878

    Although it may be rare, the following changes could affect existing solutions.

    • 0️⃣ The default value of aggressiveLazyLoading is changed to false. #825
    • 👻 Raise a exception when keyProperty is not found. #782

    👀 Follow this link to see the full list of changes.