學習筆記——Mybatis中獲取主鍵自增數據;獲取資料庫受影響行數;Mybatis中參數傳遞問題

来源:https://www.cnblogs.com/isDaHua/archive/2023/01/10/17039062.html
-Advertisement-
Play Games

2023-01-10 一、Mybatis中獲取主鍵自增數據 要獲取自增數據時,需要在映射文件中的“<insert>”中添加兩個屬性,例如獲取自增的id ①EmployeeMapper.xml中的<mapper>標簽內部 <insert id="insertEmployee" useGenerated ...


2023-01-10

一、Mybatis中獲取主鍵自增數據

要獲取自增數據時,需要在映射文件中的“<insert>”中添加兩個屬性,例如獲取自增的id

①EmployeeMapper.xml中的<mapper>標簽內部

<insert id="insertEmployee" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO
            tbl_employee(last_name,email,salary)
        VALUES
            (#{lastName},#{email},#{salary})
</insert>

②之後在測試文件中的測試自增關鍵代碼

Employee employee = new Employee(null,"pingp","[email protected]",50.0);

//測試添加員工信息
employeeMapper.insertEmployee(employee);
//查詢剛剛添加員工的id
System.out.println("employee.getId() = " + employee.getId());

之後進行運行,結果中出現員工編號,代碼OK。

③說明:useGeneratedKeys:啟用主鍵生成策略(返回值是true);keyProperty:設置存儲屬性值

二、獲取資料庫受影響行數

直接將介面中方法的返回值設置為int或boolean即可

(1)設置為int:表示受影響的行數

(2)設置為boolean:表示資料庫中的數據是否受到影響

三、Mybatis中參數傳遞問題

1、單個普通參數

可以任意使用:參數數據類型、參數名稱不用考慮。

即如果是單個參數時,在映射文件中,在“#{}”內部填寫的參數可以是任意的字母,但一般還是建議見名知意。

2、多個普通參數

Mybatis底層封裝Map結構,封裝key為param1、param2...(或者是arg0、arg1、...),即在映射文件中“#{}”傳遞參數的寫法。

3、POJO參數

Mybatis支持POJO入參,參數key是POJO中屬性

在介面中聲明的函數的參數是存放在“POJO”文件夾下類的對象

在映射文件中在傳參數語句中,等號左邊放置的是資料庫中的欄位,等號的右邊存放的是“#{類中的屬性}”

4、命名參數

在介面中聲明函數使,傳遞的參數使用的是註解,用法如下:

  /**
     * 功能:通過命名參數查詢員工信息
     * @param lastname
     * @param salary
     * @return
     */
    public List<Employee> selectEmployeeByNamed(@Param("lastName")String lastname,@Param("salary")double salary);

在映射文件中參數可以直接使用註解中的命名值。

5、Map參數

Mybatis支持直接Map入參,map的key=參數key

四、#與$的區別

1、#與$的區別

(1)#:底層執行SQL語句的對象,使用PreparedStatement,預編譯SQL,防止SQL註入隱患,相對比較安全

(2)$:底層執行SQL語句的對象使用Statement對象,使用拼接方式,未解決SQL註入安全隱患,相對不安全。

2、#與$使用場景

(1)#:sql占位符位置均可使用#

(2)$:#解決不了的參數傳遞問題,均可以交給$處理(如:form動態化表名)

 


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

-Advertisement-
Play Games
更多相關文章
  • 電銷是什麼?就是坐席拿著電話給客戶打電話嗎?no no no,讓我們一起走進京音平臺之電銷系統。 京音平臺2020年初開始建設,過去的兩年多的時間里,經歷了跌宕起伏,有經驗、有教訓,整體來說平臺經歷了人工、自動化階段,目前處於初步智能化階段,希望可以將過去的一些心路歷程分享給大家,共同交流、共同進... ...
  • 1高階函數 1.1 數學概念 回顧下數學知識: y=f(x) 這是最開始接觸的普通函數 y=g(f(x)) 這個就是我們接觸到的高階函數 在數學和電腦科學中,高階函數至少應當是滿足下麵一個條件的函數: 1)接受一個或者多個函數作為參數 2)輸出一個函數 程式中我們的高階函數也類似 示例計數器的函數 ...
  • Redis 數據結構-雙向鏈表 最是人間留不住,朱顏辭鏡花辭樹。 1、簡介 Redis 之所以快主要得益於它的數據結構、操作記憶體資料庫、單線程和多路 I/O 復用模型,進一步窺探下它常見的五種基本數據的底層數據結構。 Redis 常見數據類型對應的的底層數據結構。 String:簡單動態字元串。 L ...
  • 前言 今天給大家介紹的是Python爬蟲批量下載相親網站圖片數據,在這裡給需要的小伙伴們代碼,並且給出一點小心得。 首先是爬取之前應該儘可能偽裝成瀏覽器而不被識別出來是爬蟲,基本的是加請求頭,但是這樣的純文本數據爬取的人會很多,所以我們需要考慮更換代理IP和隨機更換請求頭的方式來對相親網站圖片數據進 ...
  • 一、MybatisPlusMax簡介 MybatisPlusMax是MybatisPlus的增強包,秉承只拓展不修改的理念,對MybatisPlus做增強。 正如MybatisPlus是對MyBatis的增強,MybatisPlusMax是對MybatisPlus的增強,拓展理念一脈相承。 Myba ...
  • 相較於最初的 Bourne shell,現代 bash 版本的最大改進之一體現在算術方面。早期的 shell 版本沒有內建的算術功能,哪怕是給變數加1,也得調用單獨的程式來完成。 1、算術方法一: $(( )) 只要都是整數運算,就可以在 $(( )) 的算術表達式內使用所有的標準運算符。還有一個額 ...
  • 大家好,我是三友~~ 這篇文章我準備來聊一聊RocketMQ消息的一生。 不知你是否跟我一樣,在使用RocketMQ的時候也有很多的疑惑: 消息是如何發送的,隊列是如何選擇的?消息是如何存儲的,是如何保證讀寫的高性能?RocketMQ是如何實現消息的快速查找的?RocketMQ是如何實現高可用的?消 ...
  • 原文:JavaFx 頁面和控制項設置快捷鍵 - Stars-One的雜貨小窩 之前說過一篇window系統全局快捷鍵的設置,本期主要是講解JavaFx應用程式的快捷鍵設置,還是有所區別的 這裡主要是Tornadofx為例進行講解,以Kotlin語言為例,由於比較簡單,就不貼截圖了,下麵例子都是自己測試 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...