天天看點

Spring以及Mybatis整合

簡介:Spring是一款輕量級,非入侵式架構,它的前身是interface21,Spring支援事務的處理,支援幾乎市面上所有的架構整合,最核心的兩個點是控制反轉(IOC)和面向切面程式設計(AOP)!

簡單來說,控制反轉是一種設計思想,沒有使用它之前,對象的建立與對象之間的依賴完全編碼在程式之中,對象的建立是由程式來控制的,而使用控制反轉之後,則将這個過程交給了第三方(使用者等...),很大程度上解耦,在Spring中實作控制反轉的是IOC容器,其實作方法是依賴注入(DI)。

<context:annotation-config />

<context:component-scan base-package="xxx" />

@Autowired 标注在類中的成員變量或方法上,完成的是bean的注入,方式預設ByType,如果類型找不到再通過ByName

如果不能唯一自動裝配上屬性,需要配合@Qualifier(value = "xxx")

@Nullable 打上這個注解,則該字段可以為null

@Resource 自動裝配通過名字,類型,可以說是@Autowired和@Qualifier的集合體

@Component 元件,将被标注的類注冊到Spring容器中,将類的執行個體化交給Spring管理,完成的是bean的注冊,執行個體化對象名預設為類名的小寫

衍生出來的有 @Repository @Service @Controller,作用等同于@Component,隻是為了符合SpringMVC的架構,分别用于Dao,Service,Controller層

@Configuration 代表這是一個配置類,就和之前看到的beans.xml一樣,表示會生成bean并注冊到Spring容器中,交給Spring托管

兩種使用方法:1.在配置類中定義一個方法,并使用@Bean注解聲明

2.在實體類上使用@Component注解,并在配置類上使用@ComponentScan("實體類的包或路徑名"),這樣會自動掃描@Component并生成Bean

最後在使用時,使用AnnotationConfigApplicationContext來擷取上下文對象

注意:第一種方法bean的名字是方法名,第二種方法bean名字為小寫的實體類名

@Bean 注冊一個bean,相當于寫的bean标簽,id=方法名,class=傳回值

@Value("xxx") 注入屬性,等價于 <-property name="xxx" value="xxx"-/>

動态代理模闆

Spring以及Mybatis整合

調用指定的方法:首先ClassForName執行個體化對象,然後找到指定的方法,以及傳入參數的屬性,最後使用invoke調用方法

若要更改私有屬性的值,可以設定setAccessible(true)

調用Class對象的newInstance()方法時,類必須要有一個無參構造器

概述:通過預編譯的方式和動态代理實作程式運作期間的統一維護,是OOP(面向對象)的一種延續,即在不影響原程式的情況下,對業務進行增強

環境:需要在spring中導入對應的jar包,使用時導入aop的相關配置

實作方式1:Spring的API接口

Spring以及Mybatis整合

實作方式2:自定義實作

Spring以及Mybatis整合

實作方式3:注解實作

Spring以及Mybatis整合
Spring以及Mybatis整合

所需的jar包

mybatis核心配置檔案

實體類和接口

1.編寫資料庫對應的實體類;

2.編寫實作所需功能的接口以及它對應的mapper.xml配置檔案

3.自己寫好的mapper.xml配置檔案在核心配置檔案中注冊

過濾設定

若注冊綁定xml之後IDEA依舊提示有綁定異常,可以在pom.xml中加入過濾設定

1.編寫資料源配置

可以在資源檔案中建立一個總的applicationContext.xml檔案,spring-dao.xml中專注資料庫的處理以及sqlSession的建立,總的xml檔案中專注bean的處理,最後import導入即可

2.sqlSessionFactory

3.sqlSessionTemplate

4.需要給接口加一個實作類

一定要使用set方法來手動注入

5.将自己寫的實作類注入到spring的配置檔案中

6.測試使用

聲明式事務(在Spring中配合AOP使用)