欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis?Mapper映射器的具體用法

 更新時間:2023年10月07日 10:45:09   作者:小日子呀  
映射器是MyBatis中最重要的文件,映射器由Java接口和XML文件共同組成,具有一定的參考價值,感興趣的可以了解一下

映射器是 MyBatis 中最重要的文件,文件中包含一組 SQL 語句(例如查詢、添加、刪除、修改),這些語句稱為映射語句或映射 SQL 語句。

映射器由 Java 接口和 XML 文件(或注解)共同組成,它的作用如下。

  • 定義參數(shù)類型
  • 配置緩存
  • 提供 SQL 語句和動態(tài) SQL
  • 定義查詢結(jié)果和 POJO 的映射關(guān)系

映射器有以下兩種實現(xiàn)方式。

  • 通過 XML 文件方式實現(xiàn),比如我們在 mybatis-config.xml 文件中描述的 XML 文件,用來生成 mapper。
  • 通過注解的方式實現(xiàn),使用 Configuration 對象注冊 Mapper 接口。

如果 SQL 語句存在動態(tài) SQL 或者比較復(fù)雜,使用注解寫在 Java 文件里可讀性差,且增加了維護(hù)的成本。所以一般建議使用 XML 文件配置的方式,避免重復(fù)編寫 SQL 語句。

XML實現(xiàn)映射器

XML 定義映射器分為兩個部分:接口和XML。下面先定義接口 WebsiteMapper

public interface WebsiteMapper {
    public List<Website> selectAllWebsite();
}

WebsiteMapper.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="net.cc.mapper.WebsiteMapper">
    <!-- 查詢所有網(wǎng)站信息 -->
    <select id="selectAllWebsite"
        resultType="net.cc.po.Website">
        select * from website
    </select>
</mapper>

下面對上述 XML 文件進(jìn)行講解。

  • namespace 用來定義命名空間,該命名空間和定義接口的全限定名一致。
  • <select> 元素表明這是一條查詢語句,屬性 id 用來標(biāo)識這條 SQL。resultType 表示返回的是一個 Website 類型的值。

在 MyBatis 配置文件中添加以下代碼。

<mapper resource="net/cc/mapper/WebsiteMapper.xml" />

該語句用來引入 XML 文件,MyBatis 會讀取 WebsiteMapper.xml 文件,生成映射器。

注解實現(xiàn)映射器

使用注解的方式實現(xiàn)映射器,只需要在接口中使用 Java 注解,注入 SQL 即可。如下所示。

public interface WebsiteMapper2 {
    @Select(value = "select * from website")
    public List<Website> selectAllWebsite();
}

 這里我們使用了 @Select 注解,并且注入了和 XML 中相同的 select 語句。

如果使用注解和 XML 文件兩種方式同時定義,那么 XML 方式將覆蓋掉注解方式。

雖然這里注解的方式看起來比 XML 簡單,但是現(xiàn)實中我們遇到的 SQL 會比該例子復(fù)雜得多。如果 SQL 語句中有多個表的關(guān)聯(lián)、多個查詢條件、級聯(lián)、條件分支等,顯然這條 SQL 就會復(fù)雜的多,所以并不建議讀者使用這種方式,此外,XML 可以相互引入,而注解是不可以的,所以在一些比較復(fù)雜的場景下,使用 XML 方式會更加靈活和方便。因此大部分的企業(yè)都以 XML 為主,本教程也會保持一致,以 XML 方式來創(chuàng)建映射器。當(dāng)然在一些簡單的表和應(yīng)用中使用注解方式也會比較簡單。

MyBatis 映射器的主要元素

下面介紹在映射器中可以定義哪些元素,以及它們的作用。

元素名稱描述備注
mapper映射文件的根節(jié)點(diǎn),只有 namescape 一個屬性namescape 作用如下:
  • 用于區(qū)分不同的 mapper,全局唯一
  • 綁定DAO接口,即面向接口編程。當(dāng) namescape 綁定某一接口后,可以不用寫該接口的實現(xiàn)類,MyBatis 會通過接口的完整限定名查找到對應(yīng)的 mapper 配置來執(zhí)行 SQL 語句。因此 namescape 的命名必須要跟接口同名。
select查詢語句,最常用、最復(fù)雜的元素之一可以自定義參數(shù),返回結(jié)果集等
insert插入語句執(zhí)行后返回一個整數(shù),代表插入的條數(shù)
update更新語句執(zhí)行后返回一個整數(shù),代表更新的條數(shù)
delete刪除語句執(zhí)行后返回一個整數(shù),代表刪除的條數(shù)
parameterMap定義參數(shù)映射關(guān)系即將被刪除的元素,不建議使用
sql允許定義一部分的 SQL,然后在各個地方引用它例如,一張表列名,我們可以一次定義,在多個 SQL 語句中使用
resultMap用來描述數(shù)據(jù)庫結(jié)果集與對象的對應(yīng)關(guān)系,它是最復(fù)雜、最強(qiáng)大的元素提供映射規(guī)則
cache配置給定命名空間的緩存-
cache-ref其它命名空間緩存配置的引用-

關(guān)于 MyBatis 的 SQL 映射文件中的 mapper 元素的 namescape 屬性有如下要求。

  • namescape 的命名必須跟某個 DAO 接口同名,同屬于 DAO 層,因此代碼結(jié)構(gòu)上,映射文件與該接口應(yīng)放置在同一 package 下(如 net.biancheng.dao.website),并且習(xí)慣上是以 Mapper 結(jié)尾(如 WebsiteMapper.java、WebsiteMapper.xml)。
  • 不同的 mapper 文件中子元素的 id 可以相同,MyBatis 通過 namescape 和子元素的 id 聯(lián)合區(qū)分。接口中的方法與映射文件中的 SQL 語句 id 應(yīng)一 一對應(yīng)。

到此這篇關(guān)于MyBatis Mapper映射器的具體用法的文章就介紹到這了,更多相關(guān)MyBatis Mapper映射器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評論