最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis?Mapper映射器的具體用法

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

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

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

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

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

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

如果 SQL 語句存在動態(tài) SQL 或者比較復雜,使用注解寫在 Java 文件里可讀性差,且增加了維護的成本。所以一般建議使用 XML 文件配置的方式,避免重復編寫 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 會比該例子復雜得多。如果 SQL 語句中有多個表的關聯(lián)、多個查詢條件、級聯(lián)、條件分支等,顯然這條 SQL 就會復雜的多,所以并不建議讀者使用這種方式,此外,XML 可以相互引入,而注解是不可以的,所以在一些比較復雜的場景下,使用 XML 方式會更加靈活和方便。因此大部分的企業(yè)都以 XML 為主,本教程也會保持一致,以 XML 方式來創(chuàng)建映射器。當然在一些簡單的表和應用中使用注解方式也會比較簡單。

MyBatis 映射器的主要元素

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

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

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

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

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

相關文章

  • Elasticsearch索引結構與算法解析

    Elasticsearch索引結構與算法解析

    ?作為搜索引擎的一部分,ES自然具有速度快、結果準確、結果豐富等特點,那么ES是如何達到“搜索引擎”級別的查詢效率呢?首先是索引,其次是壓縮算法,接下來我們就一起了解下ES的索引結構和壓縮算法
    2023-04-04
  • java 開發(fā)使用字符串和數(shù)字的性能分析

    java 開發(fā)使用字符串和數(shù)字的性能分析

    這篇文章主要介紹了java 開發(fā)使用字符串和數(shù)字的性能分析的相關資料,需要的朋友可以參考下
    2017-07-07
  • Java內(nèi)存結構和數(shù)據(jù)類型

    Java內(nèi)存結構和數(shù)據(jù)類型

    本文重點給大家介紹java內(nèi)存結構和數(shù)據(jù)類型知識,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2016-12-12
  • java讀取圖片并轉化為二進制字符串的實現(xiàn)方法

    java讀取圖片并轉化為二進制字符串的實現(xiàn)方法

    這篇文章主要介紹了java讀取圖片并轉化為二進制字符串的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Java異常處理 Throwable實現(xiàn)方法解析

    Java異常處理 Throwable實現(xiàn)方法解析

    這篇文章主要介紹了Java異常處理 Throwable實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 解決Swagger修改請求對象字段文檔不更新問題

    解決Swagger修改請求對象字段文檔不更新問題

    這篇文章主要為大家介紹了解決Swagger修改請求對象字段文檔不更新的問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Java事務管理學習之Hibernate詳解

    Java事務管理學習之Hibernate詳解

    hibernate是jdbc輕量級的封裝,本身不具備事務管理的能力,在事物管理層面,一般是委托于底層的jdbc和jta來完成調(diào)度的。下面這篇文章主要給大家介紹了Java事務管理學習之Hibernate的相關資料,需要的朋友可以參考下。
    2017-03-03
  • java接口用戶上下文的設計與實現(xiàn)

    java接口用戶上下文的設計與實現(xiàn)

    這篇文章主要為大家介紹了接口用戶上下文的設計與實現(xiàn)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Redis有效時間設置以及時間過期處理操作

    Redis有效時間設置以及時間過期處理操作

    這篇文章主要介紹了Redis有效時間設置以及時間過期處理操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作

    Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作

    Nebula?Graph?是一款開源的、分布式的、易擴展的原生圖數(shù)據(jù)庫,能夠承載包含數(shù)千億個點和數(shù)萬億條邊的超大規(guī)模數(shù)據(jù)集,并且提供毫秒級查詢,這篇文章主要介紹了Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢,需要的朋友可以參考下
    2022-10-10

最新評論

台州市| 柳江县| 西乌珠穆沁旗| 彩票| 长顺县| 平阴县| 石柱| 青浦区| 盐山县| 潮州市| 伊川县| 寻乌县| 淅川县| 木兰县| 碌曲县| 化隆| 贵德县| 平乐县| 大安市| 墨玉县| 分宜县| 涞源县| 芒康县| 深圳市| 马关县| 理塘县| 寿光市| 方城县| 黄龙县| 建始县| 巴青县| 甘肃省| 兴隆县| 龙岩市| 扶绥县| 兴海县| 太仓市| 镇赉县| 鄂托克旗| 富顺县| 舟曲县|