All Versions
Latest Version
Avg Release Cycle
125 days
Latest Release
1284 days ago

Changelog History
Page 1

  • v3.5.6 Changes

    October 06, 2020

    โœจ Enhancements:

    • โšก๏ธ A new configuration option defaultSqlProviderType is added. The specified class will be used as the SQL provider when the value() or type() is not specified in @SelectProvider, @UpdateProvider, @InsertProvider and @DeleteProvider. #1951
    • A new transaction isolation level SQL_SERVER_SNAPSHOT is added to TransactionIsolationLevel enum to support the MS SQL Server specific isolation level SNAPSHOT. #1973
    • ๐Ÿ“„ When there is no JEP-290 serialization filter defined, a WARN level message is logged on deserializing object streams. #2079

    ๐Ÿ› Bug fixes:

    • Possible NoSuchPropertyException under heavy load. #1648
    • ๐Ÿ“ฆ Possible InvalidPathException when registering type aliases by specifying package name. #1974
    • Possible OutOfMemoryError when using BlockingCache. #2044

    There is no known backward incompatible change since 3.5.5.

    ๐Ÿ‘€ Please see the 3.5.6 milestone page for the complete list of changes.

  • v3.5.5 Changes

    June 04, 2020

    โœจ Enhancements:

    • You can reference single List or Collection type parameter using its actual parameter name when useActualParamName is enabled. #1237
    • You can specify resultMap in @One and @Many. #1771
    • You can specify columnPrefix in @One and @Many. #1829
    • ๐Ÿšš A new option shrinkWhitespacesInSql to remove extra whitespaces in SQL. #1901

    ๐Ÿ› Bug fixes:

    • Possible IllegalArgumentException when using @CacheNamespaceRef . #1719
    • โ†ช Mapper method invocation should be non-blocking (work around JDK-8161372). #1929

    There is no known backward incompatible change since 3.5.4.

    ๐Ÿ‘€ Please see the 3.5.5 milestone page for the complete list of changes.

  • v3.5.4 Changes

    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.๏ผ“.

    ๐Ÿ‘€ Please see the 3.5.4 milestone page for the complete list of changes.

  • v3.5.3 Changes

    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 Changes

    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 Changes

    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 Changes

    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 Changes

    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 Changes

    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 Changes

    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.