首頁>技術>

MyBatis 簡介

MyBatis 是一個基於 Java 的持久層框架,它內部封裝了 JDBC,使開發者只需關注 SQL 語句本身,而不用再花費精力去處理諸如註冊驅動、建立 Connection、配置 Statement 等繁雜過程。

Mybatis 透過 xml 或註解的方式將要執行的各種 StatementPreparedStatement 等配置起來,並透過 Java 物件和 StatementSQL 的動態引數進行對映生成最終執行的 SQL 語句,最後由 MyBatis 框架執行 SQL 並將結果對映成 Java 物件並返回。

MyBatis 與 Hibernate

Hibernate 框架是提供了全面的資料庫封裝機制的 全自動 ORM,即實現了 POJO 和資料庫表之間的對映,以及 SQL 的自動生成和執行。

相對於此,MyBatis 只能算作是 半自動 ORM。其著力點,是在 POJO 類與 SQL 語句之間的對映關係。也就是說,MyBatis 並不會為程式設計師自動生成 SQL 語句。具體的 SQL 需要程式設計師自己編寫,然後透過 SQL 語句對映檔案,將 SQL 所需的引數,以及返回的結果欄位對映到指定 POJO。

MyBatis 特點XML 檔案中配置 SQL 語句,實現了 SQL 語句與程式碼的分離,給程式的維護帶來了很大便利。可以結合資料庫自身的特點靈活控制 SQL 語句,因此能夠實現比 Hibernate 等全自動 ORM 框架更高的查詢效率,能夠完成複雜查詢。

Spring 整合 Mybatis引入依賴

pom.xml 引入 Mybatis 相關依賴。

<dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis</artifactId>    <version>3.2.8</version></dependency><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis-spring</artifactId>    <version>1.3.1</version></dependency><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-jdbc</artifactId>    <version>4.3.17.RELEASE</version></dependency>
建立 Mybatis 配置檔案

resource 目錄下建立 mybatis-config 配置檔案。

注意:在 mapper 的動態 SQL 中若出現 ><>=<= 等符號,最好將其轉換為實體符號。否則,XML 可能會出現解析出錯問題,特別是 < 在 XML 中是絕對不能出現的。

if 標籤

對於該標籤的執行,當 test 的值為 true 時,會將其包含的 SQL 片斷拼接到其所在的 SQL 語句中。案例為了解決兩個條件均未做設定的情況,在 where 後添加了一個“1=1”的條件。這樣就不至於兩個條件均未設定而出現只剩下一個 where,而沒有任何可拼接的條件的不完整 SQL 語句。

<select id="selectByWhere" resultType="com.antoniopeng.ssm.entity.Student">    SELECT            *    FROM      student    <where>        <if test="name != null and name != ''">            AND name LIKE concat('%', #{name}, '%')        </if>        <if test="age != null and age > 0">            AND age > #{age}        </if>    </where></select>
choose 標籤

該標籤中只可以包含 <when/><otherwise/>,可以包含多個 <when/> 與一個 <otherwise/>。它們聯合使用,完成 Java 中的開關語句 switch case 功能。案例本例要完成的需求是,若姓名不空,則按照姓名查詢;若姓名為空,則按照年齡查詢;若沒有查詢條件,則沒有查詢結果。

<sql id="select">    SELECT        id,        name,        age,        score    FROM      student</sql>

使用 sql 標籤

12
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Go實戰——使用gRPC和Protobuf實現高效能api