java連接數(shù)據(jù)庫(kù)一共有三種方式以及其優(yōu)缺點(diǎn):
MyBatis層次結(jié)構(gòu)圖:
Mybatis是一個(gè)半自動(dòng)化的數(shù)據(jù)庫(kù)持久層(ORM)框架任岸,支持自定義SQL栋齿,存儲(chǔ)過(guò)程及高級(jí)映射苗胀,消除了幾乎全部的JDBC代碼及返回結(jié)果集合參數(shù)的手工設(shè)置。之所以稱它為半自動(dòng)瓦堵,是因?yàn)樗枰謩?dòng)匹配提供POJO基协、SQL和映射關(guān)系。而全表映射的Hibernate只需要提供POJO和映射關(guān)系即可菇用。
Mybatis的基本構(gòu)成:
SqlSessionFactoryBuilder(構(gòu)造器):根據(jù)配置信息或代碼來(lái)生成SqlSessionFactory(工廠接口)堡掏。
SqlSeesionFactory(工廠接口):依靠工廠接口來(lái)生成SqlSession(會(huì)話)。
SqlSession(會(huì)話):是一個(gè)既可以發(fā)送SQL去執(zhí)行并返回結(jié)果刨疼,也可以獲取Mapper的接口泉唁。
SQLMapper:它是Mybatis新設(shè)計(jì)的組件。由一個(gè)JAVA接口和XML文件(或注解)構(gòu)成的揩慕,需要給出對(duì)應(yīng)的SQL和映射規(guī)則亭畜。它負(fù)責(zé)發(fā)送SQL去執(zhí)行,并返回結(jié)果迎卤。-
Mybatis的相關(guān)配置:
代碼清單:Mybatis配置XML文件的層次結(jié)構(gòu)
- properties元素:是一個(gè)配置屬性的元素拴鸵,讓我們能在配置文件的上下文中使用它。
- seetings設(shè)置:在Mybatis中最復(fù)雜的配置蜗搔,同時(shí)也是最為重要的配置內(nèi)容之一劲藐。在大部分的時(shí)候不需要配置它或者只需要配置少數(shù)幾項(xiàng)即可。在后面講會(huì)進(jìn)行講解樟凄。
- typeAliases別名:是一個(gè)指代的名稱聘芜。該名稱可在Mybatis上下文中使用。別名在Mybatis里面分為系統(tǒng)自定義別名和自定義別名缝龄。注意汰现,在Mybatis中別名不區(qū)分大小寫。
- typeHandler類型處理器:與typeAliases一樣叔壤,分為系統(tǒng)自定義和用戶自定義兩種瞎饲。typeHandler常用的配置為java類型(javaType)和JDBC類型(jdbcType)。typeHandler允許根據(jù)項(xiàng)目的需要自定義設(shè)置java傳遞到數(shù)據(jù)庫(kù)的參數(shù)中炼绘,或者從數(shù)據(jù)庫(kù)讀出數(shù)據(jù)嗅战。
- objectFactory對(duì)象工廠:當(dāng)Mybatis在構(gòu)建一個(gè)結(jié)果返回的時(shí)候,都會(huì)使用objectFactory(對(duì)象工廠)去構(gòu)建POJO俺亮,在Mybatis中可以定制自己的對(duì)象工廠驮捍。
- plugins插件:使用插件將覆蓋一些Mybatis內(nèi)部核心對(duì)象的行為疟呐。
envirnoments配置環(huán)境:可以注冊(cè)多個(gè)數(shù)據(jù)源(dataSource)。每一個(gè)數(shù)據(jù)源分兩大部分:一個(gè)是數(shù)據(jù)庫(kù)源的配置厌漂,另一個(gè)是數(shù)據(jù)庫(kù)事務(wù)(transactionManager)的配置萨醒。 - dataSource數(shù)據(jù)源:實(shí)現(xiàn)方式有以下3種:UNPOOLED、POOLED苇倡、JNDI富纸。
- databaseIdProvider數(shù)據(jù)庫(kù)廠商標(biāo)識(shí):作用是指定SQL到對(duì)應(yīng)的數(shù)據(jù)庫(kù)廠商提供的數(shù)據(jù)庫(kù)中運(yùn)行。
- mapper映射器:是Mybatis最復(fù)雜旨椒、最核心的組件晓褪。引入映射器有以下方法:文件路徑引入、包名引入综慎、類注冊(cè)引入涣仿、接口類引入。在后面講重點(diǎn)介紹示惊。