当前使用版本(必填,否则不予处理)

3.5.3.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

JDK17+SpringBoot3.0.4+MP3.5.3.1 继承BaseMapper后使用 启动报错

重现步骤(如果有就写完整)

无业务逻辑,上述版本配置启动报错

报错信息

XXXMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

Comment From: EddyChina

报错信息如下 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'textbookLevelRepository' defined in file [/Users/monster/IdeaProjects/lookahead/lookahead-management/mgt-domain/target/classes/org/lookahead/mgt/domain/repository/TextbookLevelRepository.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'textbookLevelMapper' defined in file [/Users/monster/IdeaProjects/lookahead/lookahead-management/mgt-persistence/target/classes/org/lookahead/mgt/persistence/mapper/TextbookLevelMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:793) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:242) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1344) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1188) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:915) ~[spring-context-6.0.2.jar:6.0.2] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[spring-context-6.0.2.jar:6.0.2] at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) ~[spring-boot-3.0.0.jar:3.0.0] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[spring-boot-3.0.0.jar:3.0.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432) ~[spring-boot-3.0.0.jar:3.0.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-3.0.0.jar:3.0.0] at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:150) ~[spring-boot-3.0.0.jar:3.0.0] at org.lookahead.mgt.boot.LaMgtBoot.main(LaMgtBoot.java:22) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-3.0.0.jar:3.0.0] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'textbookLevelMapper' defined in file [/Users/monster/IdeaProjects/lookahead/lookahead-management/mgt-persistence/target/classes/org/lookahead/mgt/persistence/mapper/TextbookLevelMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1751) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:880) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:784) ~[spring-beans-6.0.2.jar:6.0.2] ... 23 common frames omitted Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.util.Assert.notNull(Assert.java:204) ~[spring-core-6.0.2.jar:6.0.2] at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:125) ~[mybatis-spring-3.0.1.jar:3.0.1] at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:73) ~[mybatis-spring-3.0.1.jar:3.0.1] at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) ~[spring-tx-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1797) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1747) ~[spring-beans-6.0.2.jar:6.0.2] ... 34 common frames omitted

Comment From: xiaoyaobishizhe

最新版本的MyBatisPlus还不支持SpringBoot3。

Comment From: EddyChina

最新版本的MyBatisPlus还不支持SpringBoot3。

非最新版本呢?

Comment From: xiaoyaobishizhe

都一样,依赖的都是SpringBoot2,不能直接换成SpringBoot3。

Comment From: xiaoyaobishizhe

SpringBoot3更新了配置类扫描机制,所以扫描不到 sqlSessionFactory ,也就无法注入。

Comment From: a496046961

请问什么时候支持springboot3 + jdk 17

Comment From: timnick-snow

请问什么时候支持springboot3 + jdk 17

其实是支持 springboot3 + jdk 17,我目前写的一些小项目,mock服务都是基于这个的,没问题。只是不支持AOT和native image. 底层的mybatis对此还没有支持,所以mp也没办法支持

Comment From: a496046961

请问什么时候支持springboot3 + jdk 17

springboot3 + JDK 17,我我的小,模拟服务服务是是基于基于基于,没没基于基于这个的是基于基于基于没没没问题问题。。只是只是只是不不不支持不不支持 支持

您好,感谢你回复。目前AOT和native image 我都没有用到,可否优先提供CRUD的一些功能

Comment From: a496046961

请问什么时候支持springboot3 + jdk 17

其实是支持 springboot3 + jdk 17,我目前写的一些小项目,mock服务都是基于这个的,没问题。只是不支持AOT和native image. 底层的mybatis对此还没有支持,所以mp也没办法支持

您好,感谢你回复。目前AOT和native image 我都没有用到,可否优先提供CRUD的一些功能

Comment From: timnick-snow

请问什么时候支持springboot3 + jdk 17

其实是支持 springboot3 + jdk 17,我目前写的一些小项目,mock服务都是基于这个的,没问题。只是不支持AOT和native image. 底层的mybatis对此还没有支持,所以mp也没办法支持

您好,感谢你回复。目前AOT和native image 我都没有用到,可否优先提供CRUD的一些功能

参考示例工程 https://github.com/timnick-snow/sp3-mp-tiny-demo

Comment From: a496046961

请问什么时候支持springboot3 + jdk 17

其实是支持 springboot3 + jdk 17,我目前写的一些小项目,mock服务都是基于这个的,没问题。只是不支持AOT和native image. 底层的mybatis对此还没有支持,所以mp也没办法支持

您好,感谢你回复。目前AOT和native image 我都没有用到,可否优先提供CRUD的一些功能

参考示例工程 https://github.com/timnick-snow/sp3-mp-tiny-demo

感谢,我决定用jdk8 + springboot2.X了

Comment From: q920447939

我也是使用了JDK17+SpringBoot3.0.4+MP3.5.3.1。不管打不打native都启动不起来。 看群里有人可以跑起来,猜测是和多数据源(用的MP的多数据源功能)有关。

Comment From: EddyChina

请问什么时候支持springboot3 + jdk 17

其实是支持 springboot3 + jdk 17,我目前写的一些小项目,mock服务都是基于这个的,没问题。只是不支持AOT和native image. 底层的mybatis对此还没有支持,所以mp也没办法支持

您好,感谢你回复。目前AOT和native image 我都没有用到,可否优先提供CRUD的一些功能

参考示例工程 https://github.com/timnick-snow/sp3-mp-tiny-demo

感谢,我决定用jdk8 + springboot2.X了

可以自己实现sqlSessionTemplate暂时解决一下。等支持了去掉就好了。目前我是这么解决的。

Comment From: EddyChina

可以自己实现sqlSessionTemplate暂时解决一下。等支持了去掉就好了。目前我是这么解决的。

我也是使用了JDK17+SpringBoot3.0.4+MP3.5.3.1。不管打不打native都启动不起来。

看群里有人可以跑起来,猜测是和多数据源(用的MP的多数据源功能)有关。

Comment From: q920447939

可以自己实现sqlSessionTemplate暂时解决一下。等支持了去掉就好了。目前我是这么解决的。

我也是使用了JDK17+SpringBoot3.0.4+MP3.5.3.1。不管打不打native都启动不起来。 看群里有人可以跑起来,猜测是和多数据源(用的MP的多数据源功能)有关。

大佬,自己实现sqlSessionTemplate需不需要注意什么地方?有Demo可以分享一下吗

Comment From: EddyChina

没啥特殊的 这是我的。 记得配置datasource ` @Bean(name = "globalConfig") public GlobalConfig globalConfig(@Qualifier("myBatisPlusMetaObjectHandler") MyBatisPlusMetaObjectHandler metaObjectHandler) { GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setMetaObjectHandler(metaObjectHandler); return globalConfig; }

@Bean
@Primary
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource,
                                           @Qualifier("globalConfig") GlobalConfig globalConfig) throws Exception {
    MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
    sqlSessionFactory.setDataSource(dataSource);

    //添加分页功能================================================================================================
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));

    sqlSessionFactory.setPlugins(interceptor);
    sqlSessionFactory.setGlobalConfig(globalConfig);

    return sqlSessionFactory.getObject();
}

@Bean
@Primary
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
    return new SqlSessionTemplate(sqlSessionFactory);
}

@Bean
@Primary
public DataSourceTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}`

可以自己实现sqlSessionTemplate暂时解决一下。等支持了去掉就好了。目前我是这么解决的。

我也是使用了JDK17+SpringBoot3.0.4+MP3.5.3.1。不管打不打native都启动不起来。 看群里有人可以跑起来,猜测是和多数据源(用的MP的多数据源功能)有关。

大佬,自己实现sqlSessionTemplate需不需要注意什么地方?有Demo可以分享一下吗

Comment From: nieqiurong

5527 统一至此处讨论