你們都知道當前比較流行的框架,如Spring、SpringMVC、Hibernate、Mybatis等框架,那今天我們來說講當前比較流行的企業框架Mybatis。 首先先來介紹一下Mybatis這個框架:Mybatis是一個開源的數據持久化層框架,它內部封裝了經過JDBC訪問數據庫的操做,支持普通的SQL查詢,存儲過程和高級映射,幾乎消除了全部的JDBC代碼和參數設置及結果集的檢索。 接下來講說Mybatis的優缺點: 優勢:與JDBC相比,減小了50%以上的代碼量,最簡單的持久化框架,小巧簡單易學,SQL代碼從程序中完全分離,可重用。提供了XML標籤,支持編寫動態SQL,提供映射標籤,支持對象與數據庫的ORM字段映射。那麼什麼是ORM呢?java
ORM(Object RelationMapping)即對象關係映射,是一種數據持久化技術,它在對象模型和關係型數據庫之間創建對應關係。 接下來講說Mybatis的缺點: SQL語句編寫量大,對於開發人員有必定的要求,數據庫移植性差sql
首先咱們的去Mybatis的官方網站(http://mybatis.org)下載最新Release版本的Mybatis 壓縮包解壓後能夠看到一下的目錄結構數據庫
在根目錄下存放着mybatis-3.2.2.jar,爲Mybatis的jar文件,Mybatis-3.2.2.pdf爲Mybatis官方使用文檔
lib目錄下存放着編譯依賴包,接下來來介紹一下Mybatis編譯的依賴包編程
其次是mybatis-3-mybatis-3.2.2.zip(Mybatis源碼包):裏面是Mybatis的全部源代碼
目錄結構就講到這,至於具體建立Mybatis項目在這我就很少說了api
接下來再介紹一下Mybatis的核心配置文件configuration.xml
Mybatis核心配置文件主要用於配置數據庫鏈接和Mybatis運行時所須要的各類特性,包含了設置和影響Mybatis行爲的屬性
接下來講說配置文件中的基本要素mybatis
<?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"> <configuration> <!-- 引入database.properties --> <properties resource="database.properties"/> <!-- 配置mybatis的log實現LOG4J --> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!-- 配置mybatis多套運行環境 --> <environments default="development"> <environment id="development"> <!-- 配置事務管理,採用JDBC的事務管理 --> <transactionManager type="JDBC"></transactionManager> <!-- POOLED:mybatis自帶的數據源,JNDI:基於Tomcat的數據源 --> <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> <!-- 將mapper文件加入到配置文件中 --> <mappers> <mapper resource="POJO/UserMapper.xml"/> </mappers> </configuration>
mybatis-config.xml文件的幾個經常使用元素的做用以下:app
在這裏我稍微提一下注意事項:mybatis-config.xml文件的元素節點是有必定的順序,節點位置若不按照順序排位的話,那麼XML文件會報錯,至於元素的排列順序是:
1.properties框架
2.settingside
3.typeAliases測試
4.typeHandlers
5.objectFactory
6.objectWrapperFactory
7.plugins
8.environments?
9.databaseIdProvider
10.mappers
經常使用元素的順序大體就是這樣的,你們能夠參考一下
有了Mybatis的核心配置文件後,接下來就要準備持久化類和SQL映射文件
那麼什麼是持久化類呢?持久化類是指其實例狀態須要被Mybatis持久化到數據庫中的類,在應用的設計中,持久化類一般對應業務中的業務實體,Mybatis通常採用POJO編程模型來實現持久化類,與POJO類配合完成持久化工做是Mybatis最多見的工做模式
既然都講到這了,我就再講講什麼是POJO吧!
POJO(Plain Ordinary Java Object):從字面上來講就是普通的Java對象,POJO類能夠簡單地理解爲符合JavaBean規範的實體類,它不須要繼承和實現任何特殊的Java基類或者接口,JavaBean對象的狀態保存咋屬性中,訪問屬性必須經過對應的getter和setter方法
接下里我用實例來向你們演示一下
public class User { private Integer id; //id private String userCode; //用戶編碼 private String userName; //用戶名稱 private String userPassword; //用戶密碼 private Integer gender; //性別 private Date birthday; //出生日期 private String phone; //電話 private String address; //地址 private Integer userRole; //用戶角色 private Integer createdBy; //建立者 private Date creationDate; //建立時間 private Integer modifyBy; //更新者 private Date modifyDate; //更新時間 //省略getter,setter方法
接下來,繼續進行SQL映射文件的建立,完成與POJO(實體類)的映射,該文件也是一個XML文件,命名爲UserMapper.xml,示例以下
<?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="POJO.UserMapper"> <!-- 查詢用戶列表記錄數 --> <select id="count" resultType="int"> select count(1) as count from smbms_user </select> </mapper>
上面的代碼就是所定義的SQL語句,其中元素的含義是
1.mapper:映射文件的根元素節點,只有一個屬性namespace
2.select:表示查詢語句,是Mybatis最經常使用的元素之一,經常使用屬性以下
SQl映射文件也弄好了,接下來就是建立測試類了,具體的實現步驟:
1.讀取全局配置文件:mybatis-config.xml
String resource="mybatis-config.xml"; //獲取mybatis-config.xml文件的輸入流 InputStream is=Resource.getResourceAsStream(resource);
2.建立SQLSessionFactory對象,此對象能夠完成對配置文件的讀寫
SQLSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
3.建立SQLSession對象,此對象的做用是調用mapper文件進行數據操做,須要注意的是必須先將mapper文件引入到mybatis-config.xml中才能起效
int count=0; SqlSession sqlSession=null; sqlSession=factory.openSession(); //Mybatis經過mapper文件的namespace和子元素的id來找到對應的SQL,從而執行查詢操做 count=sqlSession.selectOne("cn.smbms.dao.user.UserMapper.count"); logger.debug("UserMapperTest count------>"+count);
4.關閉SqlSession對象
sqlSession.close();
上面我們已經成功地將Mybatis搭建出來了,下面再來講說Mybatis的核心要素
首先介紹一下Mybatis的核心接口和類
SqlSessionFactoryBuilder負責構建SQLSessionFactory,而且提供了多個build()方法的重載,分別是
SqlSessionFactoryBuilder的最大特色就是:用過即丟。一旦建立了SQLSessionFactory對象以後,這個類就再也不須要存在了,所以SqlSessionFactoryBuilder的最佳範圍就是存在於方法體內,也就是局部變量而已。
SqlSessionFactory簡單的理解就是建立SqlSession實例的工廠。全部的Mybatis應用都是以SQLSessionFactory實例爲中心,SQLSessionFactory的實例能夠經過SqlSessionFactoryBuilder對象來獲取
SqlSessionFactory對象一旦建立,就會在整個應用程序中始終存在。沒有理由去銷燬或再建立它,而且在應用程序運行中也不建議屢次建立SQLSessionFactory,怎麼說呢,你能夠吧SqlSessionFactoryBuilder當作建立工廠的工人,而SQLSessionFactory就是建立好的工廠,通常來講工廠建立好了以後,工人就不須要了,而工廠會被保留下來,這就是它們的生命週期吧!
以上就是本文所介紹Mybatis的內容了,大體的核心都介紹完了,接下來你能夠本身去消化一下,加油!