在启动SpringBoot项目的时候出了问题

#在启动SpringBoot项目的时候出了问题,但是
也看不太懂是哪里出了问题,是我mybatis连接mysql数据库的时候出了问题吗?

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-04-14T09:33:41.038+08:00 ERROR 23000 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'authorizedController': Unsatisfied dependency expressed through field 'userMapper': Error creating bean with name 'userMapper' defined in file [E:\YUKISAMPLE\yukisample\target\classes\community\yukisample\mapper\UserMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:713) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:693) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:133) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:482) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1416) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:597) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) ~[spring-context-6.0.7.jar:6.0.7]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[spring-context-6.0.7.jar:6.0.7]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.5.jar:3.0.5]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-3.0.5.jar:3.0.5]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-3.0.5.jar:3.0.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.0.5.jar:3.0.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[spring-boot-3.0.5.jar:3.0.5]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[spring-boot-3.0.5.jar:3.0.5]
    at community.yukisample.YukisampleApplication.main(YukisampleApplication.java:12) ~[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.5.jar:3.0.5]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userMapper' defined in file [E:\YUKISAMPLE\yukisample\target\classes\community\yukisample\mapper\UserMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:710) ~[spring-beans-6.0.7.jar:6.0.7]
    ... 25 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.7.jar:6.0.7]
    at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:123) ~[mybatis-spring-2.0.1.jar:2.0.1]
    at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:73) ~[mybatis-spring-2.0.1.jar:2.0.1]
    at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) ~[spring-tx-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816) ~[spring-beans-6.0.7.jar:6.0.7]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[spring-beans-6.0.7.jar:6.0.7]
    ... 35 common frames omitted


Process finished with exit code 0


看到一个UnsatisfiedDependencyException异常,提示一个名为authorizedController的bean创建失败。具体原因是bean的一个字段userMapper的依赖无法满足,因为userMapper bean定义中的属性'sqlSessionFactory'或'sqlSessionTemplate'缺失。你debug过吗?debug运行一下看看程序

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

根据日志信息,可以看出是在创建名为 'authorizedController'bean时出现了错误。这个bean中包含了一个名为'userMapper'的依赖,而创建'userMapper' bean时出现了问题。

具体来说,'userMapper' bean需要一个'sqlSessionFactory''sqlSessionTemplate'属性,但是这两个属性都没有被正确设置。
因此,抛出了一个IllegalArgumentException异常。

解决这个问题的方法是在配置文件中添加正确的'sqlSessionFactory''sqlSessionTemplate'配置。
如果您使用的是Spring Boot,则可以在application.propertiesapplication.yml文件中添加对应的配置。
如果您使用的是XML配置,可以在mybatis-config.xml文件中进行相应的配置。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

MyBatisConfig 问题应该处在这里,你有这个配置吗,有的话发一下代码看下
或者发一下扫描路径看下

mapper是否正确被扫描

mapper 路径 扫描错了

可以在 UserMapper 上面加上 @Mapper

  1. pom是否引入了starter
    <dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>3.0.1</version>
    </dependency>
    
  2. 确认下UserMapper是否少注解
    @Mapper
    public interface UserMapper {
    }

引用chatGPT作答,这个错误是由于依赖注入出错导致的。根据报错信息可以看出,authorizedController 的 userMapper 属性依赖注入失败,因为 userMapper 的 sqlSessionFactory 或 sqlSessionTemplate 属性未被正确注入。

有两种可能的原因:

1.sqlSessionFactory 或 sqlSessionTemplate 对象没有被正确创建。你需要检查相关的配置,比如 mybatis 配置文件是否正确。也需要检查你是否将 SqlSessionFactory 或 SqlSessionTemplate 的 Bean 声明在 Spring 容器中。请检查你的配置文件和代码。

2.sqlSessionFactory 或 sqlSessionTemplate 对象没有被正确注入到 UserMapper 中。你需要检查相关的依赖注入配置,确保你已经在 Spring 配置文件中声明了 UserMapper Bean,并且 UserMapper Bean 依赖的 SqlSessionFactory 或 SqlSessionTemplate Bean 被正确注入了。

另外,报错信息中建议你使用 debug 模式来重新运行应用程序,以显示条件评估报告,这将帮助你更好地了解依赖注入时出现的问题。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个问题是由于在authorizedController中使用userMapper时,userMappersqlSessionFactorysqlSessionTemplate属性未正确设置引起的。根据错误消息,看起来是sqlSessionFactorysqlSessionTemplate属性被省略或未正确配置。

为了确保sqlSessionFactorysqlSessionTemplate属性被正确配置,可以按照以下步骤进行操作:

  1. 查看UserMapper类,确保其实现中使用了正确的注解,如@Mapper@Repository

  2. application.propertiesapplication.yml中设置必要的MyBatis配置参数,例如:

mybatis.mapper-locations=classpath*:mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.lazy-loading-enabled=true
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=30000
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dbname
spring.datasource.username=root
spring.datasource.password=password
  1. UserMapper接口中定义方法时,确保其返回值类型与查询语句的返回结果类型相同。

  2. 再次运行项目,并通过调试模式获取更多的错误信息,从中找出导致问题的代码行,以便更好地调试和解决问题。

以下是一个样板代码示例,可能有所帮助:

UserMapper.java

@Mapper
public interface UserMapper {
    User selectUserByUsername(String username);
}

application.properties

mybatis.mapper-locations=classpath*:mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.lazy-loading-enabled=true
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=30000

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=password

UserMapper.xml

```xml

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://m/

以下内容引用CHATGPT:

根据错误信息,这个问题出现在 UserMapper 接口的实现类中。错误提示为 Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required,意思是需要提供 sqlSessionFactory 或者 sqlSessionTemplate

这个错误通常出现在 MyBatis 的配置中,需要在配置文件中指定 sqlSessionFactory 或者 sqlSessionTemplate。在 Spring Boot 中,可以通过在配置文件中指定 mybatis.configuration 或者 mybatis.mapper-locations 来解决这个问题。

以下是一个示例配置文件的例子:

mybatis.configuration.map-underscore-to-camel-case=true
mybatis.mapper-locations=classpath:mapper/*.xml

其中,map-underscore-to-camel-case 表示将下划线命名转换为驼峰命名,mapper-locations 表示 MyBatis 的 Mapper 文件所在的位置。

如果还是无法解决问题,可以检查以下几个方面:

  1. 检查 MyBatis 的版本是否与 Spring Boot 兼容;
  2. 检查 MyBatis 的配置文件是否正确;
  3. 检查数据库连接是否正常。

@Autowired mapper层有没有 @Mapper

像这种报错,一看大概就知道所写的Mapper接口,没有找到对应的Mapper配置文件,看看在Spring boot启动类上是否加了@MapperScan注解,如果想了解这个注解的原理可以看我的这篇文章:https://blog.csdn.net/qq_22943729/article/details/129685501?spm=1001.2014.3001.5502
如果想了解更多的源码知识也欢迎关注我的微信公众号:程序员xiaozhang 。理解源码找问题不在难。