什么事mybatis?
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJO映射成数据库中的记录。
时隔三年再次发布大版本更新,万众瞩目!
增强:
避免在JDK 9+上发出“非法反射访问”警告。 #1156
添加了自动模块名称:org.mybatis #1199
支持java.util.Optional作为mapper方法的返回类型。 #799
避免wasNull() 使用内置类型处理程序进行不必要的 调用。 #1244
现在可以columnPrefix 在构造函数参数中指定 。 #968
搜索构造函数进行自动映射时提高了可靠性。 #1277
现在可以在OGNL表达式中访问私有,包私有和受保护的成员。 #1258
如果在分配生成的键时未找到指定的keyProperty,则抛出异常。 #1250
为SQLXML数据类型添加了类型处理程序。 #1221
允许在OGNL表达式中访问私有,包私有和受保护的成员。 #1258
标签现在修剪前导逗号。 #21
从封闭中 推断 标签 。 #486resultTyperesultMap
允许columnPrefix 在构造函数映射中指定 。 #968
组合 @CacheNamespace 和 不再抛出异常。 #1194
支持Log4J 2.6+。 #1210
略微改进了与仅支持JDBC 3 API的驱动程序的兼容性。 #1386
将测试框架升级到JUnit 5. #1425
Bug修复:
OffsetDateTimeTypeHandler,OffsetTimeTypeHandler和ZonedDateTimeTypeHandler丢失时区信息。 #1081
Cursor 与Db2一起使用时避免使用SQLException 。 #1345
Cursor 与ReuseExecutor一起使用时避免异常 。 #1351
具有超出范围偏移量的RowBounds会在DB2上导致SQLException。 #1355
某些类中未使用指定的日志记录实现。 #1272
无法解析 javaType 的 。 #1381
深度嵌套(3个级别)结果映射可能导致IllegalArgumentException。 #1176
当类层次结构深于3个级别时,未正确解析通用类型参数。 #1260
请查阅 3.5.0 milestone page 的完整的变更列表.
请注意自从3.4.6版本后有一些向后的不相容的变化:
keyProperty 使用时现在必须 指定 useGeneratedKeys。如果您依赖隐式默认值(=“id”),则会以静默方式忽略生成的键。 #1198
Cursor 现在使用 需要一个支持JDBC 4.1 API的驱动程序。 #1351
如果扩展 org.apache.ibatis.type.BaseTypeHandler,则可能需要wasNull() 在类型处理程序中添加 检查。 #1144
默认 resultSetType 值已从更改 FORWARD_ONLY 为 UNSET。这仅适用于基于注释的映射器(对于基于XML的映射器,默认为/是 UNSET)。 #1334
如果org.apache.ibatis.transaction.jdbc.JdbcTransaction 由于某种原因而扩展 ,则该属性 autoCommmit 已重命名为 autoCommit。 #941
项目源码
https://github.com/mybatis/mybatis-3