1. MyBatis入門

    MyBatis 以前叫 iBatis, 相對於 HIbernate 是一個輕量級的 ORM 框架, 一般的小型的項目使用 HIbernate 實在是大材小用. 這兩天學了學 MyBatis, 就好好的總結一下吧.

    先來一個快速入門吧!

    我的開發環境: 

        jdk1.8, windows7, EclipseJ2EE, MySQL, SQLyog


一: MyBatis 開發環境搭建.

    1. 建項目 

    新建一個 JavaProject, 新建一個 lib 目錄, 用來存放所需的 jar 包的.

    2. 下載需要的jar包

    MyBatis 的 jar 包點擊 MyBatis In Maven 上下載

    MySQL 數據庫連接驅動點擊 MySQL-connector 下載.

    3. 添加 jar 包 

    把兩個 jar 包粘貼到新建的 lib 目錄下面, 然後選中兩個 jar 包, 右擊, Build Path -> Add To Path, 把 jar 包添加到當前的項目中.

    如下:

    wKioL1Zux4DC1xI3AAAvCIK5SC0004.png


二: 對數據表的簡單 CRUD

    1. 建庫

CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE person(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO person(NAME, age) VALUES('Tom', 23);
INSERT INTO person(NAME, age) VALUES('Mike', 14);
INSERT INTO person(NAME, age) VALUES('Jack', 18);

    2. 添加 MyBatis 的配置文件 conf.xml

    在 src 目錄下建立一個 conf.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="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="oracle" />
			</dataSource>
		</environment>
	</environments>
</configuration>

   其中: 

    ①. environments及environment 的 default 屬性指定模式

         development: 開發模式(一般選用這個)

         work: 工作模式

    ②. transactionManager 的 type 屬性用於指定事務管理器類型
          JDBC:使用JDBC的提交和回滾設置,依賴從數據源獲取的連接來管理事務範圍.

          MANAGED:讓容器(如Spring)來管理事務的生命週期。默認情況會關閉連接.

    ③. dataSource 的 type 屬性指定連接池類型

        UNPOOLED:連接用完就關閉,不放到連接池
        POOLED:連接用完則放在連接池

    裏邊的連接屬性就不用說了.


    3. 建立與數據表對應實體類 Person

        在 src 下面建立一個 com.mybatis.entities 包用來存放 Person 實體類. 然後在包下建立實體類 Person.

wKiom1ZuzfayB2JfAACu1B2YeX8678.png

    具體的 setter 和 getter 以及 toString 方法自己寫好, 如果添加了一個 有參的構造方法, 一定要加上一個無參的構造方法, 因爲 MyBatis 會利用反射爲屬性賦值.


    4. 添加操作 person 數據表的 SQL 映射文件 PersonMapper.xml

    在 com.mybatis.entities 包下新建一個 PersonMapper.xml(類名+Mapper.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="com.mybatis.entities.PersonMapper"> 
	
	<!-- 通過 id 查找一個 Perosn 對象 -->
	<select id="getPerson" parameterType="int" 
		resultType="com.mybatis.entities.Person">
		SELECT * FROM person WHERE id=#{id}
	</select>
	
</mapper>

     ①. mapper 標籤的 namespace 屬性的值這樣填寫: 

        PersonMapper.xml 文件所在的包 + PersonMapper.xml 去掉 .xml

        就是: com.mybatis.entities.PersonMapper

     ②. <select> 標籤表示是一個 select 查詢, 如果按 Eclipse 的提示鍵沒有提示的話, 說明沒有關聯 .dtd 文件, 關聯方法點擊這裏 Eclipse中在XML中如何關聯.dtd文件.

    ③. <select> 標籤的屬性

      a). id: 我們在調用內部 SQL 語句的時候會利用這個, 保證本文件中唯一不衝突.

      b). parameterType: 傳進來的參數的類型, 因爲我們通過 id 查找一個 Person 對象.所以傳進來一個 int 類型的 id.

      c). resultType: 返回值類型, 這裏寫全類名, 帶着包名.

    內部就是SQL語句, 至於 #{id} 這個就是用來接收傳進來的 int 類型的數字.


    5. 在 conf.xml 文件中關聯 PersonMapper.xml 映射文件

    利用 <mappers> 標籤來關聯映射文件. 如下:

<mappers>
	<mapper resource="com/mybatis/entities/PersonMapper.xml"/>
</mappers>

    <mappers>標籤與<environments>標籤處於同一個級別.

    

    6. 編寫測試類. 獲取一個 Person 對象

    新建一個 com.mybatis.test 包, 在包下建立一個 TestPerson 類. 利用 Junit 單元測試來測試.

代碼如下:

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.mybatis.entities.Person;

public class TestPerson {
	
	@Test
	public void testGetPerson(){
		
		InputStream is = getClass().getClassLoader()
		        .getResourceAsStream("conf.xml");
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
		        .build(is);
		SqlSession session = sessionFactory.openSession();
		
		String statement = "com.mybatis.entities.PersonMapper.getPerson";
		Person person = session.selectOne(statement , 1);
		
		System.out.println(person); // Person [id=1, name=Tom, age=23]
		
	}
	
}

    與 Hibernate 一樣, 我們需要一個 SessionFactory 和一個 Session,

    SessionFactory的創建需要一個流, 這個流對應着就是 conf.xml 文件的流.

    session 的創建也很簡單, openSession 就可以了. 


    告知 MyBatis 要調用哪一個 SQL 語句:

    String statement = "com.mybatis.entities.PersonMapper.getPerson"; 

    最後邊的 getPerson 就是剛纔我們<select>標籤配置的 id 值.


     因爲我們需要傳一個參數 id 給 SQL 語句, 所以我們需要在第二個參數上帶一個 1.

    Person person = session.selectOne(statement , 1);

    表示查詢 id 爲 1 的 Person 對象.


    最後打印, 查詢完成!

    

    本篇博文代碼可以點擊 http://pan.baidu.com/s/1gexNy3T 下載.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章