mybatis學習筆記—入門

來源:互聯網
上載者:User

一、什麼是mybatis

MyBatis 是支援普通SQL 查詢,預存程序和進階映射的優秀持久層架構。

MyBatis  消除 了幾乎所有的JDBC 代碼和參數的手工設定以及結果集的檢索。

MyBatis  使用簡單的XML 或註解用於配置和原始映射,將介面和Java 的POJOs (Plan   Old   Java   Objects ,普通的Java 對象)映射成資料庫中的記錄。

MyBatis 的簡化並且規範了JDBC的持久化方式,同時又相對與hibernate更加靈活,可以說是介於JDBC和HIBERNATE之間的優秀持久化架構。

MyBatis的前身就是IBATIS,只是版本更新後由於某些事情進行了更名。

二、入門

1》使用順序:

1、通過XML,或從Configuration
類的習慣準備的執行個體中構建的方式,建立SqlSessionFactoryBuilder
對象。

2、通過SqlSessionFactoryBuilder
擷取SqlSessionFactory。

1-1》XML方式樣本擷取SqlSessionFactoryBuilder

String resource = "org/mybatis/example/Configuration.xml"; Reader reader = Resources.getResourceAsReader(resource); sqlMapper = new SqlSessionFactoryBuilder().build(reader); 

XML

<?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>         <environments default="development">             <environment id="development">                 <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>       <mapper resource="org/mybatis/example/BlogMapper.xml"/>    </mappers> </configuration>  

當然,在XML設定檔中還有很多可以配置的,上面的樣本指出的則是最關鍵的部分。
要注意 XML 頭部的聲明,需要用來驗證 XML文檔正確性。environment 元素體中包含對事
務管理和串連池的環境配置。 mappers 元素是包含所有 mapper (映射器) 的列表,這些 mapper

的 XML檔案包含 SQL代碼和映射定義資訊。

1-2》不使用XML擷取SqlSessionFactoryBuilder

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource(); TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource); Configuration configuration = new Configuration(environment); configuration.addMapper(BlogMapper.class); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); 

注意這種情況下配置是添加映射類。映射類是 Java 類,這些類包含 SQL 映射語句的注
解從而避免了 XML檔案的依賴, XML映射仍然在大多數進階映射(比如:嵌套 Join 映射)
時需要。出於這樣的原因,如果存在 XML設定檔的話,MyBatis 將會自動尋找和載入一
個對等的 XML 檔案(這種情況下,基於類路徑下的 BlogMapper.class 類的類名,那麼
BlogMapper.xml將會被載入)。

2-1》從 SqlSessionFactory中擷取 SqlSession

方法1:

SqlSession session = sqlMapper.openSession(); try { Blog blog = (Blog) session.selectOne( "org.mybatis.example.BlogMapper.selectBlog", 101); } finally { session.close(); } 

方法2:

例如: SqlSession session = sqlSessionFactory.openSession(); try { BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101); } finally { session.close(); }

3-1》我們還需要一個映射XML(寫SQL的地方)

<?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="org.mybatis.example.BlogMapper"> <select id="selectBlog" parameterType="int" resultType="Blog"> select * from Blog where id = #{id} </select> </mapper> 

上面代碼的BlogMapper(相當於一個對象),ID=“selectBlog” 相當於表明一個SQL的ID值(方法),用於調用SQL。

上文就可以“Blog blog = (Blog) session.selectOne( "org.mybatis.example.BlogMapper.selectBlog", 101); ” 這樣來調用了。

基本上可以用JAVA的對象和方法來理解。

最後:

       1、如 BlogMapper 這樣的映射器類來說,還有一個妙招。它們中間映射的語句可以不需要
在 XML中來寫,而可以使用 Java 註解來替換。比如,上面的 XML樣本可以如下來替換:  

package org.mybatis.example;public interface BlogMapper {@Select("SELECT * FROM blog WHERE id = #{id}")Blog selectBlog(int id);} 

對於簡單語句來說,使用註解代碼會更加清晰,然而 Java 註解對於複雜語句來說就會
混亂,應該限制使用。因此,如果你不得不做複雜的事情,那麼最好使用 XML來映射語句。
當然這也取決於你和你的項目團隊的決定,看哪種更適合你來使用,還有以長久方式來
使用映射語句的重要性。也就是說,不要將自己局限在一種方式中。你可以輕鬆地將註解換
成 XML映射語句,反之亦然。

        2、命名解析:為了減少輸入量,MyBat is 對所有的命名配置元素使用如下的命名解析規則,包括語句,結果映射,緩衝等。

》直接尋找完全限定名(比如“com.mypackage.MyMapper.selectAllThings”),如果發現就使用。 

》簡短名稱(比如“selectAllThings”)可以用來引用任意含糊的對象。而如果有兩個或兩個以上的(比如“com.foo.selectAllThings”和“com.bar.selectAllThings”),那麼就會得到錯誤報表,說簡短名稱是含糊的,因此就必須使用完全限定名。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.