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 thevalue()
ortype()
is not specified in@SelectProvider
,@UpdateProvider
,@InsertProvider
and@DeleteProvider
. #1951 - A new transaction isolation level
SQL_SERVER_SNAPSHOT
is added toTransactionIsolationLevel
enum to support the MS SQL Server specific isolation levelSNAPSHOT
. #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 usingBlockingCache
. #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.
- โก๏ธ A new configuration option
-
v3.5.5 Changes
June 04, 2020โจ Enhancements:
- You can reference single
List
orCollection
type parameter using its actual parameter name whenuseActualParamName
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.
- You can reference single
-
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.
- You can now omit unnecessary
-
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.
- ๐ Support variable substitution in CDATA of included
-
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
andUnpooledDataSource
#1527. - SQL provider annotations now takes
value
attribute which is an alias fortype
#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. #1478LocalDateTypeHandler
andLocalDateTimeTypeHandler
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 isprovideSql
. #1279 - You can now get
databaseId
in SQL providers. #1503 - 0๏ธโฃ The default type handler for
LONGVARCHAR
is changed fromClobTypeHandler
toStringTypeHandler
. This improves compatibility with SAP ASE. #1484
There is a backward incompatible change.
-
v3.5.0 Changes
January 20, 2019MyBatis 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'sresultType
from the enclosingresultMap
. #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 usinguseGeneratedKeys
. 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 addwasNull()
check in your type handler. #1144 - 0๏ธโฃ The default
resultSetType
value has been changed fromFORWARD_ONLY
toUNSET
. This is applied only to annotation based mappers (for XML based mappers, the default is/wasUNSET
). #1334 - If you extended
org.apache.ibatis.transaction.jdbc.JdbcTransaction
for some reason, the propertyautoCommmit
has been renamed toautoCommit
. #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.