Skip to content

Releases: mybatis/mybatis-3

mybatis-3.5.7

26 Apr 10:49
Compare
Choose a tag to compare

Bug fixes:

  • Improved performance under JDK 8. #2223

There is no known backward incompatible change since 3.5.6.

Please see the 3.5.7 milestone page for the complete list of changes.

mybatis-3.5.6

06 Oct 20:57
Compare
Choose a tag to compare

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.

mybatis-3.5.5

04 Jun 15:39
Compare
Choose a tag to compare

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.

mybatis-3.5.4

03 Feb 01:47
Compare
Choose a tag to compare

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.

mybatis-3.5.3

20 Oct 11:21
Compare
Choose a tag to compare

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.

mybatis-3.5.2

15 Jul 07:49
Compare
Choose a tag to compare

Enhancements:

  • SQL builder now supports LIMIT, OFFSET #1521 and FETCH FIRST #1582.
  • SQL builder now supports multi-row insert syntax #1333.
  • 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.

mybatis-3.5.1

07 Apr 11:26
Compare
Choose a tag to compare

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
  • 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

mybatis-3.5.0

20 Jan 18:13
Compare
Choose a tag to compare

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.

  • 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
  • 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

mybatis-3.4.6

11 Mar 16:46
Compare
Choose a tag to compare

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.

mybatis-3.4.5

20 Aug 09:58
Compare
Choose a tag to compare

Enhancements:

  • 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.