MyBatis-Spring-Boot-Starter 2.0版本的变化.

(非常抱歉地說)我整理了2019年1月22日發布的2.0版本的變更點。

注意:由于2019/4已经发布了2.0.1版本,因此内容中也包含了2.0.1的更改。

在这次变更中,没有引入引人注目的大型功能增加或改进,因此该变更的亮点是它是第一个要求使用Spring Boot 2.x(Spring Framework 5.x)或更高版本的版本(尽管进行了一些细微的改进…)。

另外,

    • mybatis-spring-boot-starterの使い方については、こちら(バージョン2.0対応済)

 

    • mybatis-spring-boot-starter 1.2から1.3の変更点については、こちら

mybatis-spring-boot-starter 1.1から1.2の変更点については、こちら

mybatis-spring-boot-starter 1.0から1.1の変更点については、こちら

请随时根据需要进行调整。

注意:
对于Spring Boot 1.5.x(Spring Framework 4.3.x),维护工作将一直持续到版本1.3.x,但根据2019年8月的计划,Spring Boot 1.5.x将宣布终止支持,同时版本1.3.x的维护工作也将在同一时间结束(即计划在1.3.5版本发布后结束维护)。

依赖库的必需版本

如果使用2.0版本,则以下版本是必需的。

    • MyBatis 3.5+

 

    • Mybatis-Spring 2.0+

 

    Spring Boot 2.0+

Java的必需版本

如果使用2.0版本,将需要Java 8或更高版本。

更新依赖库的版本

在2.0版本中,以下库的版本已经更新。

ライブラリ名1.3.2のバージョン2.0.0のバージョン2.0.1のバージョンMyBatis3.4.63.5.03.5.1MyBatis Spring1.3.22.0.02.0.1Spring Boot1.5.10.RELEASE2.0.8.RELEASE2.0.9.RELEASE

注意:
与2.0.0版本同时发布的1.3.3版本已更新至Spring Boot 1.5.19.RELEASE,与2.0.1版本同时发布的1.3.4版本已更新至Spring Boot 1.5.20.

在配置属性中支持typeAliasesSuperType的指定

typeAliasesSuperType是Spring MyBatis提供的SqlSessionFactoryBean支持的选项。当从指定的包下进行扫描时,如果只想要扫描那些可以分配给指定的类或接口的类(即继承或实现了该类或接口的类),就可以使用这个选项来注册类型别名。

如果只需要注册实现了 com.example.data.Entity 接口的类作为类型别名,那么可以从指定的包下面选择

mybatis.type-aliases-package=com.example
mybatis.type-aliases-super-type=com.example.data.Entity

可以通过设定这个选项来实现。

只有当存在一个可注入的DataSource时,MyBatis的自动配置才会生效。

在1.3.x版本之前,在没有指定主要数据源的情况下,如果有多个DataSource被注册到DI容器中(即存在多个通过类型进行注入的DataSource候选项),则MyBatis的自动配置会出错。但是从2.0版本开始,MyBatis的自动配置将被禁用。这个变更是基于对Spring Boot提供的JdbcTemplate的自动配置等功能的反馈。

另外,关于对多个数据源的自动配置支持,请希望您能够创建一个问题(PR也非常欢迎!)作为功能添加请求。

应用spring-boot-autoconfigure-processor

spring-boot-autoconfigure-processor是一个用于在编译时预先读取Auto-Configure类的注解信息(Auto-Configure所需的元数据),并将其输出到属性文件中的工具,旨在减少在Spring Boot运行时从类中读取元数据的过程,从而加快应用程序的启动时间。
在1.3.x版本中,并没有使用该机制,但从2.0版本开始,我们改进了这个机制,将元数据输出到属性文件中。

支持指定基本包时的通配符功能

从版本2.0.1开始,在配置属性(mybatis.type-aliases-package和mybatis.type-handlers-package)中,可以使用通配符来指定要扫描的基础包。

详细来说…

# パッケージの深さを意識したワイルドカード指定
mybatis.type-handlers-package=com.example.*.typehandler

# パッケージの深さを意識しないワイルドカード指定
mybatis.type-handlers-package=com.example.**.typehandler

可以实现类似的指定。

注意:
由于MyBatis本身不支持通配符的指定,所以在MyBatis本身的配置文件(mybatis-config.xml)等中,无法指定包含通配符的基础包。

重要提示:
应用版本2.0.1后,已报告了“扫描类型别名时出现重复错误”的问题,无论是否使用通配符指定,因此在进行更新时需要注意。需要注意的是,并不是在所有情况下都会发生错误,已经发现当扫描目标包下存在以下条件的类或接口时,会出现重复错误:

– 使用了多个无名对象
– 存在同名的接口、类或内部类

该问题将在MyBatis Spring 2.0.2中修复(计划于2019年7月上旬发布),并计划在2019年7月上旬发布版本2.1.0以包含MyBatis Spring 2.0.2。另外,由于已宣布于2019年3月结束支持Spring Boot 2.0.x,并已经从GA目标中移除,没有计划将此问题回溯至版本2.0.x。为解决此问题,基本上建议更新至版本2.1.x。但是,如果确实无法升级到版本2.1.x,建议考虑单独应用MyBatis Spring 2.0.2来解决该问题。

在指定@MybatisTest时,不再需要指定@ExtendWith(SpringExtension.class)。

从2.0.1版本开始,在标有@MybatisTest的JUnit 5测试用例类中不再需要指定@ExtendWith(SpringExtension.class)。这是因为在@MybatisTest上加注@ExtendWith(SpringExtension.class),JUnit 5的测试框架引擎将从@MybatisTest指定的合成注解中读取信息。

此更改是对Spring Boot提供的@SpringBootTest等类似处理的反馈。

@MybatisTest
class MyMapperTest {
  // ...
}
@ExtendWith(SpringExtension.class) // バージョン2.0.1以降ではこの指定は不要
@MybatisTest
class MyMapperTest {
  // ...
}
bannerAds