【MyBatis】——快速入門
阿新 • • 發佈:2019-01-02
一、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包,配置核心的配置檔案,再根據各自的思想原則去進行相關的配置,簡單快速上手。