springboot報錯:Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required錯誤詳解

問題一

在Mapper層,它是需要加@Mapper註解的,但是網上又有人加@respository,兩個註解混起來了,其實是任選其一都可以的。一般都是使用@Mapper。但是如果在Mapper層中加了註解,在配置主類SpringBootMybatisApplication裏面就不需要@MapperScan(“com.example.demo.mapper”)掃描註解,在配置類里加掃描註解的意思是將這個包下所有的都註解成Mapper。

問題二

用STS創建的SpringBoot項目,其中配置文件默認的是application.properties,一般在這個文件裏面配置數據源。但是這個文件想要起作用,則必須在配置主類中加入@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})自動注入,否則該配置文件中的配置無效。會報出Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.錯誤

但是此時如果加了這個註解,由於Mybatis的依賴中的jar包,

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.3.2</ version>
</dependency>

問題三

mybatis-spring-1.3.2中取消了自動注入SqlSessionFactory 和 SqlSessionTemplate,所以會報出Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required錯誤。
那得想解決辦法啊,於是網上搜解決辦法,參考此文, 創建了一個基類,然後讓自己的dao去繼承。

https://www.cnblogs.com/hawk0035/p/3337283.html?utm_source=tuicool

但是我的Mapper層是使用了註解版Mybatis,是一個接口,不能繼承類。所以這個辦法就不能用了。
既然mybatis-spring-1.3.2中取消了自動注入,那我就換成低版本的mybatis-spring-1.1.1,但是事實還是一樣,沒有任何改變。

那就想辦法不要@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})自動注入,所以必須把application.properties配置文件改爲application.yml。問題終於解決了。

發佈了216 篇原創文章 · 獲贊 480 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章