學習筆記——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
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...