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
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...