MyBatis源碼學習(零)——準備

當我們使用MyBatis時,往往會有以下操作:

1,添加@MapperScan註解,或者在配置文件中使用<mybatis:scan>進行設置。這一步設置的是需要掃描的Mapper文件路徑,比如這樣:

@Configuration
@EnableTransactionManagement
@MapperScan({"com.macro.mall.mapper","com.macro.mall.dao"})
public class MyBatisConfig {
}

2,編寫Mapper.java接口文件,比如:

public interface OmsOrderDao {
    List<OmsOrder> getList(@Param("queryParam") OmsOrderQueryParam queryParam);

    int delivery(@Param("list") List<OmsOrderDeliveryParam> deliveryParamList);

    OmsOrderDetail getDetail(@Param("id") Long id);
}

Mapper接口類可以不用註解,也可以不用寫實現類。

在ServiceImpl或者其他什麼類中,添加Mapper接口作爲屬性,並且使用@Autowired註解,比如:

@Service
public class OmsOrderServiceImpl implements OmsOrderService {
    
    @Autowired
    private OmsOrderDao orderDao;
    ...
}

3,在配置文件中指定Mapper.xml文件的路徑,比如在SpringBoot的yml格式配置文件中可以這麼寫:

mybatis:
  mapper-locations:
    - classpath:dao/*.xml
    - classpath*:com/**/mapper/*.xml

4,編寫Mapper.xml文件,與Mapper.java文件對應,比如在xml文件中使用以下寫法:

<mapper namespace="com.macro.mall.dao.OmsOrderDao">

就可以關聯到具體的Mapper接口。

另外,我們可以在Mapper.java中的方法上使用註解並編寫動態sql,實現和Mapper.xml文件一樣的效果。

5,調用Mapper接口

 

使用起來並不難,下面一系列文章主要關注的就是,我們做的這些諸多配置和操作,從Spring和MyBatis源碼的角度,是如何生效的。

因此,接下來的源碼分析將按照SpringIOC的加載順序,分析以下幾個關鍵點的部分源碼:

1,@MapperScan註解生效,根據配置路徑掃描Mapper接口文件,創建BeanDefinition。

2,@Autowired註解生效,創建Mapper接口代理,注入sqlSessionFactory和sqlSessionTemplate。

3,注入sqlSessionFactory時,根據配置路徑掃描xml文件,和Mapper接口代理綁定。

4,mybatis配置項的加載過程

5,調用Mapper接口時,使用接口代理完成數據庫查詢等操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章