34對MyBatis的博客的整理心得

對本博客的mybatis從新讀一下,作一個整理。以下:java

1:爲何會有mybatis,由於原生的jdbc方式有很大問題:程序員

(1)數據庫鏈接,使用時就建立,不使用當即釋放,對數據庫進行頻繁鏈接開啓和關閉,形成數據庫資源浪費,影響 數據庫性能。spring

設想:使用數據庫鏈接池管理數據庫鏈接。sql

(2)、將sql語句硬編碼到java代碼中,若是sql 語句修改,須要從新編譯java代碼,不利於系統維護。數據庫

設想:將sql語句配置在xml配置文件中,即便sql變化,不須要對java代碼進行從新編譯。mybatis

(3)、向preparedStatement中設置參數,對佔位符號位置和設置參數值,硬編碼在java代碼中,不利於系統維護。app

設想:將sql語句及佔位符號和參數所有配置在xml中。性能

(4)、從resutSet中遍歷結果集數據時,存在硬編碼,將獲取表的字段進行硬編碼,,不利於系統維護。測試

設想:將查詢的結果集,自動映射成java對象。ui

 

2:mybatis開發流程:

(1)先創建下SqlSessionFactoryBuilder:經過SqlSessionFactoryBuilder建立會話工廠SqlSessionFactory

(2)經過SqlSessionFactory建立SqlSession,使用單例模式管理sqlSessionFactory(工廠一旦建立,使用一個實例)。未來mybatis和spring整合後,使用單例模式管理sqlSessionFactory。

(3)sqlSession的誕生過程是這樣的:經過SqlSessionFactory建立一個SqlSession.

 

3:DAO開發分紅兩個方面:

  (1)傳統的DAO方式:

程序員須要寫dao接口以及dao的實現類。

在DAO的實現類中有變量:SqlSessionFactory 。

 

這個SqlSessionFactory變量在測試方法中寫入。

 

 

 (2)Mapper的開發方式


我先給出mapper代理開發的思路(mapper代理開發的規範):

咱們用mapper代理開發時要寫2個:

1.mapper.xml

2.mapper接口

  咱們寫的mapper接口只要須要遵循一些開發規則,mybatis能夠自動生成mapper接口實現類代理對象。(這句話很重要)

 

咱們重點講一下開發規則:

開發規範:

一、在mapper.xml中namespace等於mapper接口地址

 

 

二、mapper.java接口中的方法名和mapper.xml中statement的id一致

 mapper.xml中是這樣的:

mapper.java接口應該是這樣的:

名字要如出一轍的。

三、mapper.java接口中的方法輸入參數類型和mapper.xml中statement的parameterType指定的類型一致。

 

四、mapper.java接口中的方法返回值類型和mapper.xml中statement的resultType指定的類型一致。

 


 

 

4:在寫mapper.xml時,裏面有映射。分爲兩種:resultType和resultMap:

resultType,pojo的名字和mapper.xml中配置的名字如出一轍才能映射成功。

resultMap沒有上面的要求,能夠本身創建映射關係。

一對多怎麼映射:用collection。

多對多怎麼映射:用collection。

 

 

 

5:與spring的整合

(1)原始DAO開發的整合方式:

咱們之前要用Mybatis是須要sqlMapConfig.xml(這個配置文件須要配置dataource,以及mapper.xml文件。)原始的sqlMapConfig.xml以下:


 


 

 

 

如今咱們加入spring以後,database就要交給spring的配置文件applicationContext.xml來處理了。並且咱們之前在用Dao時,傳統的作法是要在Dao類中有SqlSessionFactory,如今用Spring以後,最主要的改變就是這裏了。

須要spring經過單例方式管理SqlSessionFactory。

spring和mybatis整合生成代理對象,使用SqlSessionFactory建立SqlSession。(spring和mybatis整合自動完成)

application.xml的配置文件以下:

 

 (2)mapeer代理開發整合:


 

 

 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索