MyBatis(十三):使用註解開發

来源:https://www.cnblogs.com/jmsstudy/archive/2022/09/14/16694954.html
-Advertisement-
Play Games

一、什麼是使用註解開發 使用註解開發就是無需再配置Mapper.xml文件,直接在介面中利用註解實現SQL語句。 二、為什麼要使用註解開發 正如官方文檔所說: 使用註解來映射簡單語句會使代碼顯得更加簡潔。 但對於稍微複雜一點的語句,Java 註解不僅力不從心,還會讓你本就複雜的 SQL 語句更加混亂 ...


一、什麼是使用註解開發

使用註解開發就是無需再配置Mapper.xml文件,直接在介面中利用註解實現SQL語句。

二、為什麼要使用註解開發

正如官方文檔所說:

使用註解來映射簡單語句會使代碼顯得更加簡潔。

但對於稍微複雜一點的語句,Java 註解不僅力不從心,還會讓你本就複雜的 SQL 語句更加混亂不堪。 因此,如果你需要做一些很複雜的操作,最好用 XML 來映射語句。

三、如何使用註解進行開發

1.刪掉原來的UserMapper.xml

2.修改UserMapper介面

package com.jms.dao;

import com.jms.pojo.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {

    @Select("select * from user")
    List<User> getUserList();

}

在方法上面的那就是註解。

3.修改核心配置文件mybatis-config.xml中的mapper映射

<mappers>
    <mapper class="com.jms.dao.UserMapper"/>
 </mappers>

原來是映射xml文件,現在我們修改為映射介面。

4.junit測試

package com.jms.dao;

import com.jms.pojo.User;
import com.jms.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {

    @Test
    public void test() {
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
    }

}

測試結果如下:

 

測試結果沒有問題。

那麼問題就來了,我們究竟應該在xml文件中去映射呢還是用註解進行映射呢。上面其實已經說得很明白了,簡單的語句用註解映射更加簡潔,而複雜的語句則應該用xml文件進行映射。正如官方文檔的一句話:選擇何種方式來配置映射,以及認為是否應該要統一映射語句定義的形式,完全取決於你和你的團隊。 換句話說,永遠不要拘泥於一種方式,你可以很輕鬆的在基於註解和 XML 的語句映射方式間自由移植和切換。

技術沒有高低好壞之分,有區別的是使用技術的人。

 

(本文僅作個人學習記錄用,如有紕漏敬請指正)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基於全屏iframe的微前端框架--擎天,解決了iframe UI不同步、URL不同步、數據不共用的難題,並充分發揮了iframe作為頁面容器的優勢,實現了父子應用非同步載入、子應用瞬間切換的能力,從而將微前端項目達到單體應用的體驗。 ...
  • 不知不覺,掘金關註者人數已經超過 1000 人,因此特地做了這個頁面紀念一下,感謝大家關註 🙇‍ ,希望博客園的粉絲也漲漲。後續也將繼續努力,持續輸出一些有價值的文章。本文內容涉及的技術棧為 React + Three.js + Stulus,本文中主要包含的知識點包括:圓錐幾何體 ConeGeo... ...
  • 一、系統架構的演變 1、技術架構發展歷史時間軸 ①單機垂直拆分:應用間進行瞭解耦,系統容錯提高了,也解決了獨立應用發佈的問題,存在單機計算能力瓶頸。 ②集群化負載均衡可有效解決單機情況下併發量不足瓶頸。 ③服務改造架構 雖然系統經過了垂直拆分,但是拆分之後發現有重覆的功能,比如,用戶註冊、發郵件等等 ...
  • 外觀模式(Facade Pattern)隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的介面。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個介面,來隱藏系統的複雜性。 ...
  • 什麼是統一建模語言,來看看百科中的介紹統一建模語言(Unified Modeling Language,UML)是一種為面向對象系統的產品進行說明、可視化和編製文檔的一種標準語言,是非專利的第三代建模和規約語言。UML是面向對象設計的建模工具,獨立於任何具體程式設計語言。簡單來說UML就是脫離於具體 ...
  • 在日常生產生活中,我們常說,“安全第一”、“安全無小事”。圍繞著安全問題,在各行各業都有對各類常見安全問題的解決方案和突發安全問題的應急預案。在互聯網、軟體開發領域,我們日常工作中對各類常見的安全問題又有哪些常見的解決方案呢?在此,結合經典架構圖做一個梳理。 ...
  • Django_render 模板語法 模板引擎是一種可以讓開發者把服務端數據填充到html網頁中完成渲染效果的技術。它實現了把前端代碼和服務端代碼分離的作用,讓項目中的業務邏輯代碼和數據表現代碼分離,讓前端開發者和服務端開發者可以更好的完成協同開發。 靜態網頁:頁面上的數據都是寫死的,萬年不變 動態 ...
  • 目錄 一.嵌入式設備的 OpenGL ES 版本 二.相容性 三.著色器腳本 1.OpenGL ES shader 2.0 2.OpenGL ES shader 3.0 3.版本聲明 4. 預設精度修飾符 precision 4.輸入輸出 5.變數賦值 四.關於頂點緩衝區對象 VBO 與頂點數組對象 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...