MyBatis-Spring-boot-starter 1.2版本的变更内容
我整理了2017年1月2日发布的版本1.2的变更内容。
补充一下,
-
- mybatis-spring-boot-starterの使い方については、こちら(バージョン1.2対応済み)
- mybatis-spring-boot-starter 1.0から1.1の変更点については、こちら
请看这个。
注意:
2017年4月10日:追加备注
添加了版本1.2.1的更改内容。2017年8月21日:追加备注
添加了版本1.2.2的更改内容。
依赖库的必需版本
使用1.2版本时,以下版本是必需的。
-
- MyBatis 3.4+
-
- Mybatis-Spring 1.3+
- Spring 4.3+
需要使用Spring 4.3+和Spring Boot 1.4+。
在1.2版本中,由于使用了从Spring 4.3添加的ObjectProvider来进行自动配置,所以需要使用基于Spring 4.3的Spring Boot 1.4+版本。
需要注意的是,如果在加载Mapper文件时使用通配符(例如:mybatis.mapper-locations=classpath*:**/mapper/*.xml),如果不使用Spring Boot 1.4.3+(Spring 4.3.5+),可能会遇到重复加载Mapper文件的问题(gh-108)。
注意:
如果在Spring 4.2(Spring Boot 1.3)上使用,请使用版本1.1.1。
图书馆版本
在1.2版本中,以下库的版本已经进行了更新。
工件的依赖结构 de
在1.2版本中,已经对mybatis-spring-boot-starter和mybatis-spring-boot-autoconfigure的依赖结构进行了重新评估。这是回应Spring Boot核心提交者 Nicoll先生的建议而进行的调整。
在1.1版本中,具体而言,
[INFO] +- org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.1.1:compile
[INFO] | \- org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:1.1.1:compile
[INFO] | +- org.mybatis:mybatis:jar:3.4.0:compile
[INFO] | +- org.mybatis:mybatis-spring:jar:1.3.0:compile
[INFO] | +- org.springframework.boot:spring-boot:jar:1.4.3.RELEASE:compile
[INFO] | | \- org.springframework:spring-context:jar:4.3.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-aop:jar:4.3.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-beans:jar:4.3.5.RELEASE:compile
[INFO] | | \- org.springframework:spring-expression:jar:4.3.5.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.3.RELEASE:compile
[INFO] | \- org.springframework.boot:spring-boot-starter-jdbc:jar:1.4.3.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.4.3.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.3.RELEASE:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.1.8:compile
[INFO] | | | | \- ch.qos.logback:logback-core:jar:1.1.8:compile
[INFO] | | | +- org.slf4j:jcl-over-slf4j:jar:1.7.22:compile
[INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.22:compile
[INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.22:compile
[INFO] | | \- org.yaml:snakeyaml:jar:1.17:runtime
[INFO] | +- org.apache.tomcat:tomcat-jdbc:jar:8.5.6:compile
[INFO] | | \- org.apache.tomcat:tomcat-juli:jar:8.5.6:compile
[INFO] | \- org.springframework:spring-jdbc:jar:4.3.5.RELEASE:compile
[INFO] | \- org.springframework:spring-tx:jar:4.3.5.RELEASE:compile
在版本1.2中有所变化。
[INFO] +- org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.2.0:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.4.3.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot:jar:1.4.3.RELEASE:compile
[INFO] | | | \- org.springframework:spring-context:jar:4.3.5.RELEASE:compile
[INFO] | | | +- org.springframework:spring-aop:jar:4.3.5.RELEASE:compile
[INFO] | | | \- org.springframework:spring-expression:jar:4.3.5.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.3.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.3.RELEASE:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.1.8:compile
[INFO] | | | | \- ch.qos.logback:logback-core:jar:1.1.8:compile
[INFO] | | | +- org.slf4j:jcl-over-slf4j:jar:1.7.22:compile
[INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.22:compile
[INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.22:compile
[INFO] | | \- org.yaml:snakeyaml:jar:1.17:runtime
[INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.4.3.RELEASE:compile
[INFO] | | +- org.apache.tomcat:tomcat-jdbc:jar:8.5.6:compile
[INFO] | | | \- org.apache.tomcat:tomcat-juli:jar:8.5.6:compile
[INFO] | | \- org.springframework:spring-jdbc:jar:4.3.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-beans:jar:4.3.5.RELEASE:compile
[INFO] | | \- org.springframework:spring-tx:jar:4.3.5.RELEASE:compile
[INFO] | +- org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:1.2.0:compile
[INFO] | +- org.mybatis:mybatis:jar:3.4.2:compile
[INFO] | \- org.mybatis:mybatis-spring:jar:1.3.1:compile
已经发生了改变。
改变是什么呢… 在版本1.1中,mybatis-spring-boot-starter仅依赖于mybatis-spring-boot-autoconfigure,并且mybatis-spring-boot-autoconfigure具有与MyBatis、MyBatis-Spring和Spring Boot的依赖关系。乍一看似乎没有问题,但实际上,mybatis-spring-boot-autoconfigure实际上兼具了Starter的角色,这一点与Spring Boot提供的Starter和AutoConfigure的理念不同!!
這是關於Spring Boot應用程序的。如果僅添加AutoConfigure的組件,我們應該確保不會對Spring Boot應用程序產生任何副作用(即保持自動配置不生效)。Starter的作用就是一次性解決所有必需的依賴庫,以使自動配置生效!
警告:
如果您在依赖项中指定了mybatis-spring-boot-starter作为依赖项,则不会受到此更改的影响。但是,如果您指定了mybatis-spring-boot-autoconfigure,则在使用版本1.2时,请将其更改为使用mybatis-spring-boot-starter。
添加MyBatis配置属性
自 MyBatis 1.2 版本起,新增了一项新的属性(mybatis.configuration-properties),用于指定要替换占位符(${键名})的值。占位符可在 MyBatis 配置文件、Mapper XML 文件、SQL 定义的替换变量以及部分注解的值中使用。
只需要一种方式,原文为:可在属性中指定的格式有。
mybatis.configuration-properties.キー名=キー値
那么…例如,
mybatis.configuration-properties.db.schema=prod
通过将`${db.schema}`定义为这样的方式,可以引用它。
这个可以在MyBatis配置文件中表达为
<properties>
<property name="db.schema" value="prod" />
</properties>
在使用MyBatis Spring提供的org.mybatis.spring.SqlSessionFactoryBean时,可以表示为
@Bean
SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
Properties props = new Properties();
props.setProperty("db.schema", "prod");
factoryBean.setConfigurationProperties(props);
return factoryBean;
}
或者
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configurationProperties">
<props>
<prop key="db.schema">prod</prop>
</props>
</property>
</bean>
成为。
(ní
注意:
实际上,在版本1.1.1中,您可以通过以下定义来实现相同的功能。这种方法可以在版本1.2中使用,并且如果存在相同的键名,则优先使用在版本1.2中添加的mybatis.configuration-properties指定的值。src/main/resources/application.properties
mybatis.configuration.variables.db.schema=prod例如,您可以在mybatis.configuration.variables中定义与环境无关的值(或默认值),然后在每个配置文件(每个环境)中使用mybatis.configuration-properties来覆盖环境相关值。
与IDE的配合:与IDE协同工作时的mybatis.configuration属性键
在1.1版本中,已经支持使用属性(mybatis.configuration.*)配置org.apache.ibatis.session.Configuration,但在STS和IntelliJ IDEA等IDE上,属性键未能自动完成。这个问题将在1.2版本中得到解决。
注意:
然而,现在又出现了另一个问题(gh-127),即属性键重复的问题……
这似乎是maven-bundle-plugin在构建时的一个bug,预计将在1.2.1版本中解决。2017/4/10: 补充说明
属性键重复的问题已经在1.2.1版本中解决了!!
添加ConfigurationCustomizer接口
请参考1.3版本的更改内容。
我要添加 @MybatisTest(mybatis-spring-boot-starter-test)。
请查阅1.3版本的变更内容。