Spring Boot 與 mybatis配置方法
1.首先,spring boot 配置mybatis需要的全部依賴如下:
<!-- Spring Boot 啟動(dòng)父依賴 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <!-- spring boot 項(xiàng)目啟動(dòng)必須引入的web依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.1.RELEASE</version> </dependency> <!-- Spring Boot Mybatis 依賴 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> <!-- oracle的數(shù)據(jù)庫驅(qū)動(dòng)包 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.4.0-atlassian-hosted</version> </dependency>
這里主要說一下上邊的數(shù)據(jù)庫驅(qū)動(dòng)包,oracle和mysql引入不同的依賴,千萬不要忘記。如果忘記引入,會(huì)報(bào)找不到驅(qū)動(dòng)類異常。
2.然后,在application.properties 配置文件里添加如下內(nèi)容:
##數(shù)據(jù)庫連接信息 spring.datasource.url=jdbc:oracle:thin:@//192.168.1.171:1521/orcl spring.datasource.username=znxd spring.datasource.password=znxd spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver ##指向mapper的xml文件位置 mybatis.mapper-locations=classpath:mapper/*Mapper.xml
上邊以spring.datasource 開頭的內(nèi)容其實(shí)有很多,具體,在application.properties 文件里輸入后看看能點(diǎn)出的內(nèi)容就知道了。
springboot默認(rèn)會(huì)把spring.datasource開頭的信息收納,進(jìn)行DataSource對(duì)象的配置,進(jìn)而進(jìn)行sqlSessionFactory的配置等相關(guān)數(shù)據(jù)庫連接的配置,所以其他很多人會(huì)說寫什么配置類,那些我感覺沒有必要的。(配置druid需要配一個(gè)@Bean,下一篇會(huì)說到)
當(dāng)然如果是特別詳細(xì)的,而在application.properties文件里又通過spring.datasource 點(diǎn)不出相關(guān)的配置,那可能需要配置類什么的。
mybatis.mapper-locations 所指向的位置是從src/main/resource開始的,前邊需要加上classpath,它指向的是你的mapper.xml文件放置的位置。
3.我是mybatis通過數(shù)據(jù)庫表逆向工程生成的實(shí)體類、mapper等,先把項(xiàng)目具體的放置結(jié)構(gòu)貼出來如下:
對(duì)于上圖的解釋如下:
啟動(dòng)類必須放在項(xiàng)目中相對(duì)其他類的最高處,前邊文章說過,spring boot沒有傳統(tǒng)的spring 項(xiàng)目配置的<bean> 標(biāo)簽,它掃描bean的方式就是從啟動(dòng)類依次向下掃描進(jìn)默認(rèn)的內(nèi)置tomcat容器的。
上圖service放置的位置比其實(shí)現(xiàn)類放置的位置高,如果有兩個(gè)service A和B,實(shí)現(xiàn)類里有Aimpl和Bimpl,如果有Aimpl調(diào)用B的情況,有可能會(huì)在啟動(dòng)容器報(bào)“a field named ‘B' not found”貌似這種錯(cuò)誤,說明容器掃描順序有誤。
這種情況的最好的解決辦法,就應(yīng)該像我將service放在高處,容器啟動(dòng)先掃描進(jìn)service,然后再掃描impl,這樣在實(shí)現(xiàn)類掃描的時(shí)候就肯定能找到service,也就不會(huì)出現(xiàn)這種錯(cuò)誤了。
另一種解決辦法是在引入service時(shí)多添加一個(gè)注解:@Lazy
@Autowired @Lazy //這樣就會(huì)延遲加載,上圖不需要,這里只是解釋這注解 LogsUserActiveMapper logsUserActiveMapper;
總之,如果出現(xiàn)調(diào)用與被調(diào)用關(guān)系,一定要記得,被調(diào)用者要首先被掃描進(jìn)spring boot內(nèi)置容器,也就是被調(diào)用者的包位置要放的較高一些(位置至少也待相平)。
3.service實(shí)現(xiàn)類上需要加一個(gè)@Service 注解。這個(gè)可能不需要,我一直沒有試試。
4.spring boot+mybatis除了這些要求,還需要在啟動(dòng)類處添加一個(gè)注解@MapperScan,如下:
package cloud.kafka; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @EnableTransactionManagement //如果mybatis中service實(shí)現(xiàn)類中加入事務(wù)注解,需要此處添加該注解 @MapperScan("cloud.kafka.mapper") //掃描的是mapper.xml中namespace指向值的包位置 public class KafkaLogApplication { public static void main(String[] args){ SpringApplication.run(KafkaLogApplication.class, args); } }
如下是我的mapper.xml里namespace的值
<mapper namespace="cloud.kafka.mapper.LogsUserActiveMapper" >
這樣就完成mybatis的配置了,下一篇會(huì)說spring boot+mybatis事務(wù)配置、druid配置、分頁插件配置。
以上所述是小編給大家介紹的Spring Boot 與 mybatis配置方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- springboot與mybatis整合實(shí)例詳解(完美融合)
- 詳解spring boot mybatis全注解化
- Spring Boot MyBatis 連接數(shù)據(jù)庫配置示例
- Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫的步驟全紀(jì)錄
- Spring Boot 集成Mybatis實(shí)現(xiàn)主從(多數(shù)據(jù)源)分離方案示例
- 詳解Spring boot上配置與使用mybatis plus
- springboot + mybatis配置多數(shù)據(jù)源示例
- spring boot mybatis枚舉映射示例代碼
相關(guān)文章
SpringBoot結(jié)合Redis配置工具類實(shí)現(xiàn)動(dòng)態(tài)切換庫
本文主要介紹了SpringBoot結(jié)合Redis配置工具類實(shí)現(xiàn)動(dòng)態(tài)切換庫,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08SpringBoot中創(chuàng)建bean的7種方式總結(jié)
Spring是一款廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用程序開發(fā)的Java框架,其 IOC 和 DI 特性可以有效地管理應(yīng)用程序中的對(duì)象,提高了應(yīng)用程序的可維護(hù)性和可擴(kuò)展性,那你知道spring有哪些方式將bean放入容器嘛,今天就給大家總結(jié)一下2023-07-07Kotlin與Java 泛型缺陷和應(yīng)用場(chǎng)景詳解
這篇文章主要為大家介紹了Kotlin與Java 泛型缺陷和應(yīng)用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12SpringMVC+EasyUI實(shí)現(xiàn)頁面左側(cè)導(dǎo)航菜單功能
這篇文章主要介紹了SpringMVC+EasyUI實(shí)現(xiàn)頁面左側(cè)導(dǎo)航菜單功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09java數(shù)據(jù)結(jié)構(gòu)ArrayList詳解
本文詳細(xì)講解了java數(shù)據(jù)結(jié)構(gòu)ArrayList的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12