springboot yaml配置mybatis:
mybatis:
configuration:
map-underscore-to-camel-case: true
# 打印sql, 方便调试
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
use-generated-keys: true
config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
mapper-locations: classpath:mybatis/mapper/**/*.xml
每次启动报错:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is java.lang.IllegalStateException: Property 'configuration' and 'configLocation' can not specified with together
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
... 56 common frames omitted
Caused by: java.lang.IllegalStateException: Property 'configuration' and 'configLocation' can not specified with together
at org.springframework.util.Assert.state(Assert.java:73) ~[spring-core-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:421) ~[mybatis-spring-2.0.1.jar:2.0.1]
at org.mybatis.spring.SqlSessionFactoryBean.getObject(SqlSessionFactoryBean.java:554) ~[mybatis-spring-2.0.1.jar:2.0.1]
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.sqlSessionFactory(MybatisAutoConfiguration.java:150) ~[mybatis-spring-boot-autoconfigure-2.0.1.jar:2.0.1]
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration$$EnhancerBySpringCGLIB$$a979178.CGLIB$sqlSessionFactory$1(<generated>) ~[mybatis-spring-boot-autoconfigure-2.0.1.jar:2.0.1]
at org.mybatis.spring.boot.autoconfigure
通过排查后发现坑爹的是: configuration:配置 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
解决办法是:sql 日志打印配置放在configuration中:
<configuration>
<settings>
<!-- 打印sql,-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
</configuration>