MyBatis是一款優秀的基於Java的持久性框架mysql
Mybatis曾經是apache的一個開源項目ibatis,2010年遷移到google,並改名爲MyBatis。2013年又遷移到Github。git
Github連接:https://github.com/mybatis,打開出現一隻奮鬥的小肥鳥就對了。github
點擊MyBatis3。sql
而後點擊下載。數據庫
選擇你相應的框架版本再對應電腦系統進行下載apache
建立映射文件在dao層:mapper.xmlmybatis
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="xx.xxx.xxxx"><!-- namespace命名範圍 --> <!-- 新增:insert,刪除:delete,修改:update,查詢:select --> <insert id="insertStudent" parameterType="Student"> <!-- parameterType屬性能夠省略 --> INSERT INTO student(stuName,stuAge)VALUES(#{stuName},#{stuAge})<!-- SQL語句 #爲佔位符 --> </insert> </mapper>
建立主配置文件在src根目錄:mybatis.xmlapp
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!-- xml配置根節點 --> <configuration> <!-- 引入properties數據庫鏈接配置 --> <properties resource="db.properties"/> <!-- 定義別名 --> <typeAliases> <!-- 將指定包中全部類的簡單類當作其別名 --> <package name="cn.chenghao.entity"/> </typeAliases> <!-- 定義數據源 --> <environments default="development"><!-- default寫上一個執行環境的id --> <environment id="development"><!-- 見名知意的id --> <transactionManager type="JDBC"/><!-- 事務管理器 --> <dataSource type="POOLED"><!-- 數據庫鏈接池 --> <property name="driver" value="${driver}"/> <!-- 加載驅動 --> <property name="url" value="${url}"/> <!-- 創建鏈接 --> <property name="username" value="${username}"/> <!-- 數據庫用戶名 --> <property name="password" value="${password}"/> <!-- 數據庫密碼 --> </dataSource> </environment> </environments> <!-- 註冊映射文件 --> <mappers> <package name="cn.chenghao.mapper"/><!-- 掃描包下面的映射文件 --> </mappers> </configuration>
Db.properties框架
driver=com.mysql.jdbc.Driver url=jdbc:mysql:///EmployDB?useUnicode=true&characterEncoding=utf-8 username=root password=root
所謂的生命週期就是第一個對象應該存活的時間,好比一些對象一次用完後就要關閉,使它們被Java虛擬機(JVM)銷燬,以免繼續佔用資源,因此咱們會根據每個組件的做用去肯定其生命。ui
(1)SqlSessionFactoryBuilder
SqlSessionFactoryBuilder的做用就是在於建立SqlSessionFactory,建立成功後,SqlSessionFactoryBuilder就失去了做用,因此它只能存在於建立SqlSessionFactory的方法中,而不要讓其長期存在。
(2)SqlSessionFactory
SqlSessionFactory能夠被認爲是一個數據庫鏈接池,它的做用是建立SqlSession接口對象。由於MyBatis的本質就是Java對數據庫的操做,因此SqlSessionFactory的生命週期在於於整個MyBatis的應用之中,因此一旦建立了SqlSessionFactory的生命週期就等同於MyBatis的應用週期。
因爲SqlSessionFactory是一個對數據庫的鏈接池,因此它佔據着數據庫的鏈接資源。若是建立多個SqlSessionFactory,那麼就存在多個數據庫鏈接池,這樣不利於對數據資源的控制,也會致使鏈接資源被消耗光,出現系統宕機等狀況,因此儘可能避免發生這樣的狀況。所以在通常的應用中咱們每每但願SqlSessionfactory做爲一個單例,讓它在應用中補共享。
(3)SqlSession
若是說SqlSessionFactory至關於數據庫鏈接池,那麼SqlSession就至關於一個數據庫鏈接(Connection對象),你能夠在一個事務裏面執行多條SQL,而後經過它的commit、rollback等方法,提交或者回滾事務。因此它應該存活在一個業務請求中,處理完整個請求後,應該關閉這條鏈接,讓它歸還給SqlSessionFactory,不然數據庫資源就很快被消耗精光,系統應付癱瘓,因此用try…catch…fanally語句來保證其正確關閉。
(4)Mapper
Mapper是一個接口,它由SqlSession所建立,因此它的最大生命週期至多和SqlSession保持一致,儘管它很好用,可是因爲SqlSession關閉,它的數據庫鏈接資源也會消失,因此它的生命週期應該小於等於SqlSession的生命週期。Mapper表明是一個請求中的業務處理,因此它應該在一個請求中,一旦處理完了相關的業務,就應該廢棄它。