1. 程式人生 > >【MyBatis】——快速入門

【MyBatis】——快速入門

一、Mybatis介紹

Mybatis是一個持久層的框架,是apache下的頂級項目。MyBatis 是支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC程式碼和引數的手工設定以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始對映,將介面和 Java 的POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。

二、Mybatis快速入門

2.1、準備開發環境

1、工程結構
        
2、需要的jar包
        
其中包括mybatis核心包、mysql驅動包、日誌包、動態代理包等
3、匯入指令碼,建立資料庫和表(這裡使用的是mysql資料庫)
         以使用者訂單為例,建立資料庫表結構如下。
        


       既然匯入和日誌的jar包,那就要配置一下log4j.properties
        

2.2、使用Mybatis查詢表中的資料

 1、配置mybatis的核心配置檔案SqlMapConfig.xml ,配置mybatis的執行環境,資料來源、事務等。
        

2、根據使用者id(主鍵)查詢使用者資訊
       建立po類

       

      定義操作users表的sql對映檔案userMapper.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">

<!-- namespace名稱空間,作用就是對sql進行分類號管理,理解sql隔離 
注意:使用mapper代理方法開發,namespace有特殊重要的作用
-->
<mapper namespace="test">

	<!-- 在對映檔案中配置很多sql語句 -->
	<!-- 需求:通過id查詢使用者表的記錄 -->
	<!-- 通過select執行資料庫查詢
	id:標識對映檔案中的sql
	將sql語句封裝到mappedStatement物件中,所以將id稱為statement的id
	parameterType:指定輸入引數的型別,這裡指定int型
	#{}表示一個佔位符號
	#{id}:其中的id表示接收輸入的引數,引數名稱就是id,如果輸入引數是簡單型別,#{}中的引數名可以任意,可以是value或其它名稱
	
	resultType:指定sql輸出結果的所對映的java物件型別,select指定resultType表示將單條記錄對映成的java物件
	 -->
	 <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
	 	SELECT * FROM USER WHERE id=#{value}
	 </select>
</mapper>

SqlMapConfig.xml檔案中註冊userMapper.xml檔案

<!-- 載入對映檔案 -->
	<mappers>
		<mapper resource="sqlmap/UserMapper.xml"/>
	</mappers>

編寫測試程式碼:執行定義的select語句
/**
 * mybatis入門程式
 * @author Arlene-xu
 *
 */
public class MybatisFirst {

	//根據id查詢使用者資訊,得到一條記錄結果
	@Test
	public void findUserByIdTest() throws IOException{
		
		//mybatis配置檔案
		String resource="SqlMapConfig.xml";
		
		//得到配置檔案流
		InputStream inputStream=Resources.getResourceAsStream(resource);
		
		//通過會話工廠,傳入mybatis的配置檔案資訊
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		
		//通過工廠得到SqlSession
		SqlSession sqlSession=sqlSessionFactory.openSession();
		
		//通過SqlSession操作資料庫
		//第一個引數:對映檔案中statement的id,等於namespace+"."+statement的id
		//第二個引數:指定和對映檔案中鎖匹配的parameterType型別的引數
		//sqlSession.selectOne結果是與對映檔案中鎖匹配的resultType型別的物件
		//selectOne查詢一條記錄
		User user=sqlSession.selectOne("test.findUserById",1);
		
		System.out.println(user);
		
		//釋放資源
		sqlSession.close();
	}
}

回顧hibernate,其實都是完成ORM的一種方式,只不過hibernate更體現了一種完全的面向物件模式,不需要寫sql語句,是自動生成的,適用於那種需求變化不多的中小型專案。而mybatis專注於sql本身,對sql的修改優化比較方法,可以說它是一個不完全的ORM框架,適用於需求變化較多的專案。

搭建mybatis框架,和hibernate一樣,匯入需要的jar包,配置核心的配置檔案,再根據各自的思想原則去進行相關的配置,簡單快速上手。