Mybatis框架的搭建和基本使用方法


1.1MyBatis的下載

最新yBatis可以在github官網上下載:

https://github.com/mybatis/mybatis-3

1.2 Mybatis Jar

 

1.3MyBatis工作原理

1.4Mybatis的整個的執行流程

 

 MyBatis應用程序根據XML配置文件創建SqlSessionFactory,SqlSessionFactory在根據配置,配置來源於兩個地方,一處是配置文件,一處是Java代碼的注解,獲取一個SqlSession。SqlSession包含了執行sql所需要的所有方法,可以通過SqlSession實例直接運行映射的sql語句,完成對數據的增刪改查和事務提交等,用完之后關閉SqlSession。

2.第一個Mybatis程序

2.1、建立java項目

2.2、建立student表(id,name,age,socre)

 

2.3、定義實體Student

 

 

2.4、定義接口IStudentDao

 

2.5.1、定義主配置文件

在pdf中搜索”mybatis-3-config.dtd”關鍵字,即可找到映射文件的約束。

 

2.5.2主配置文件詳解

1)注冊DB連接四要素屬性文件

2)指定實體類全限定性類名的別名

對於實體類的全限定性類名的別名指定方式,一般合用<package/>方式,這樣做的好處是會將該包中所有實體類的簡單類型名指定為別名,寫法簡單方便

<!--<typeAlias type="com.jet.bean.Student" alias="Student" /> -->

<!--將指定包中所有類的簡單類型類名當做其別名  -->

<package name="com.jet.bean" />

3)指定映射文件

方式一:

<mappers>

    <mapper resource="com/jet/dao/StudentMapper.xml"/>

</mappers>

方式二:

<mappers>

    <mapper class="com.jet.dao.IStudentDao"/>

</mappers>

此方式,需要滿足以下幾個要求:

1)  映射文件名要與dao接口名稱相同

2)  映射文件要與接口在同一包中

3)  映射文件中的<mapper />的namespace屬性值為dao接口的全類名

<mapper namespace="com.jet.dao.IStudentDao ">

<insert id="insertStu" >

Insert into student(name,age,score)values(#{name},#{age},#{score});

</insert>

</mapper>

方式三:           

當映射方件較多時,也可以使用如下形式。其中package的name屬性指定映射文件所放的包。

<mappers>

<package name="com.jet.dao"/>

</mappers>

這種方式的使用需要滿足以下幾個條件:

1)  dao使用mapper動態代理實現

2)  映射文件名要與dao接口名稱相同

3)  映射文件名與接口在同一包中

4)  映射文件中的<mapper />的namespace屬性值為dao接口的全類名

 

2.5.3從屬性文件中讀取jdbc的相關連接信息——創建主屬性文件

2.6、定義映射文件mapper.xml,名稱無所謂,一般放在接口下面,在pdf中查找”mabatis-3-mapper”dtd約束

 

2.7.1、定義Dao的實現類

 

 

2.7.2、 API詳解

Dao中需要通過SqlSession對象來操作DB,而SqlSession對象的創建,需要其工廠對象SqlSessionFactory。SqlSessionFactory對象需要通過其構建器對象SqlSessionFactoryBuilder的build()方法,在加載了主配置文件的輸入流對象后創建。

(1)   Resource類

用於讀取資源文件,其有很多方法通過加載並解析資源文件,返回不同類型的IO流對象。

(2) SqlSessionFactoryBuilder類

SqlSessionFactory的創建,需要使用SqlSessionFactoryBuilder對的build()方法。

(3) SqlSessionFactory

SqlSessionFactory接口對象是一個重量級對象(系統開銷大的對象),是線程安全的,所以一個應用只需要一個該對象即可。創建SqlSession需要使用SqlSessionFactory接口的openSession()方法。

(4)SqlSession接口

SqlSession接口用於持久化操作。一個SqlSession對應着一次數據庫會話,一次會話以SqlSession對象的創建開始,以SqlSession對象的關閉結束。

SqlSession接口對象是線程不安全的,所以每次數據庫會話結束前,需要馬上調用其close()方法,將其關閉。再次需要會話,再次創建。

而在關閉時會判斷當前SqlSession是否被提交;若沒有被提交,則會執行回滾。若已被提交,則直接將SqlSession關閉。

2.7.8、源碼分析

1、輸入流的關閉Resources

2、SqlSession的創建

3、增刪改查的執行

4、SqlSession的commit()

5、Sqsession的close

2.8、定義測試類

 

2.9、添加日志控件文件

2.10、使用junit運行測試類,成功插入數據到數據庫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM