欧美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é)點,只有 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ù)雜、最強大的元素提供映射規(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)文章

  • java多線程的同步方法實例代碼

    java多線程的同步方法實例代碼

    這篇文章主要介紹了 java多線程的同步方法實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Spring深入分析講解BeanUtils的實現(xiàn)

    Spring深入分析講解BeanUtils的實現(xiàn)

    java知識體系統(tǒng)有很多數(shù)據(jù)實體,比較常用的DTO、BO、DO、VO等,其他類似POJO概念太老了現(xiàn)在基本廢棄掉了,本篇幅直接忽略,對于這幾種數(shù)據(jù)實體各自代表的含義和應(yīng)用場景先做一下簡單描述和分析
    2022-06-06
  • SpringBoot整合Mybatis-Plus實現(xiàn)微信注冊登錄的示例代碼

    SpringBoot整合Mybatis-Plus實現(xiàn)微信注冊登錄的示例代碼

    微信是不可或缺的通訊工具,本文主要介紹了SpringBoot整合Mybatis-Plus實現(xiàn)微信注冊登錄的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 基于jdbc處理Clob的使用介紹

    基于jdbc處理Clob的使用介紹

    本篇文章是對jdbc處理Clob的使用進(jìn)行了分析介紹,需要的朋友參考下
    2013-05-05
  • Java使用dom4j解析xml、讀取xml文件圖文教程

    Java使用dom4j解析xml、讀取xml文件圖文教程

    這篇文章主要給大家介紹了關(guān)于Java使用dom4j解析xml、讀取xml文件的相關(guān)資料,包括創(chuàng)建SAXReader對象、讀取并解析XML文件、獲取Document對象、獲取根元素和子元素、獲取屬性和內(nèi)容等操作,還提供了配置Dom4j?jar包的步驟,需要的朋友可以參考下
    2025-02-02
  • SpringBoot實現(xiàn)網(wǎng)站的登陸注冊邏輯記錄

    SpringBoot實現(xiàn)網(wǎng)站的登陸注冊邏輯記錄

    登陸注冊功能是我們?nèi)粘i_發(fā)中經(jīng)常遇到的一個功能,下面這篇文章主要給大家介紹了關(guān)于SpringBoot實現(xiàn)網(wǎng)站的登陸注冊邏輯的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • Java如何自定義異常打印非堆棧信息詳解

    Java如何自定義異常打印非堆棧信息詳解

    這篇文章主要給大家介紹了關(guān)于Java如何自定義異常打印非堆棧信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Java IO文件過濾器對命令設(shè)計模式的使用

    Java IO文件過濾器對命令設(shè)計模式的使用

    java io流里面使用到了很多的設(shè)計模式,最典型的就是裝飾模式,還有命令模式,下面分兩部分來講Java IO文件過濾器對命令設(shè)計模式的使用,一起看看吧
    2017-06-06
  • java面向?qū)ο缶幊填惖膬?nèi)聚性分析

    java面向?qū)ο缶幊填惖膬?nèi)聚性分析

    高內(nèi)聚、低耦合是軟件設(shè)計中非常關(guān)鍵的概念。在面向?qū)ο蟪绦蛟O(shè)計中類的劃分時,類的內(nèi)聚性越高,其封裝性越好,越容易復(fù)用
    2021-10-10
  • 自己手寫Mybatis通用batchInsert問題

    自己手寫Mybatis通用batchInsert問題

    這篇文章主要介紹了自己手寫Mybatis通用batchInsert問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論