欧美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 文件里可讀性差,且增加了維護的成本。所以一般建議使用 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 文件進行講解。

  • namespace 用來定義命名空間,該命名空間和定義接口的全限定名一致。
  • <select> 元素表明這是一條查詢語句,屬性 id 用來標識這條 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)建映射器。當然在一些簡單的表和應(yīng)用中使用注解方式也會比較簡單。

MyBatis 映射器的主要元素

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

元素名稱描述備注
mapper映射文件的根節(jié)點,只有 namescape 一個屬性namescape 作用如下:
  • 用于區(qū)分不同的 mapper,全局唯一
  • 綁定DAO接口,即面向接口編程。當 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),并且習慣上是以 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)微信注冊登錄的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 基于jdbc處理Clob的使用介紹

    基于jdbc處理Clob的使用介紹

    本篇文章是對jdbc處理Clob的使用進行了分析介紹,需要的朋友參考下
    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)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-10-10
  • Java如何自定義異常打印非堆棧信息詳解

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

    這篇文章主要給大家介紹了關(guān)于Java如何自定義異常打印非堆棧信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    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

最新評論