1. 程式人生 > >老司機學習MyBatis之如何使用typeAliases別名和@Alias註解

老司機學習MyBatis之如何使用typeAliases別名和@Alias註解

一、前言

typeAliases是MyBatis中的別名處理器類,翻譯過來就是別名的意思。別名處理器的作用就是把Java型別,給它起一個簡單一點的別名,這樣我們在XML檔案中引入全類名的地方就可以使用別名替代。這樣可以減少很多的工作量,節約開發時間。例如下面我們使用的是全類名:


現在我們要做的就是給他取一個別名。

二、案例

修改mybatis-config.xml核心配置檔案

<!-- mybatis-config.xml增加別名處理 -->
<!--typeAliases為某個Java型別起別名,別名不區分大小寫
    type:指定起別名類的全類名,預設別名就是類名小寫,user
    alias:起新的別名
-->
<typeAliases>
	<typeAlias type="com.queen.mybatis.bean.User"/>
</typeAliases>

修改UserMapper.xml對映檔案

<!-- 將com.queen.mybatis.bean.User全類名用user替代 -->
<select id="findUserById" resultType="user">
	select id, loginId, userName, role, note from t_user where id = #{id}
</select>

上面的案例我們可以看到在typeAliases標籤下面,可以為User類起一個別名,那麼如果有很多的Java類呢,那不是下面有很多很多的<typeAlias></typeAlias>,我們是否能通過一種其他的配置實現為某一個包下面所有的類都起別名,而不用為單獨的某一個類。答案是肯定的,MyBatis為我們提供了一個package標籤,可以通過這個標籤實現上面的功能配置。下面我們來看看如何使用package標籤:

修改mybatis-config.xml檔案

<typeAliases>
	<!-- <typeAlias type="com.queen.mybatis.bean.User"/> -->
	<!-- package:為某個包下所有類批量起別名
	     name:指定包名(為當前包以及下面所有的後代包的每一個類都起一個預設別名,預設小寫)
	 -->
	<package name="com.queen.mybatis.bean"/>
</typeAliases>

通過如上配置可以實現批量起別名

雖然我們可以使用package批量起別名,但是有一種情況會導致衝突,我們來模擬一下,新建一個User類,這個User類在com.queen.mybatis.bean.child目錄下面,也就是bean的子包目錄下面,如圖:



啟動測試類,控制檯報錯

這是別名衝突了。。。那我們現在又要如何解決這個問題呢?其實您能想到的,MyBatis都為我們想到了

A、使用@Alias註解為某個型別指定新的別名

B、修改User類檔案


C、修改UserMapper.xml檔案


D、啟動測試類,看控制檯是否報錯

2017-07-30 09:36:51,569 [main] [com.queen.mybatis.mapper.UserMapper.findUserById]-[DEBUG] <==      Total: 1
User [id=1, loginId=Sabot, userName=薩博, role=革命軍, note=革命軍的二號人物,同艾斯一樣,為蒙奇·D·路飛的哥哥(義兄)。]
2017-07-30 09:36:51,570 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Resetting autocommit to true on JDBC Connection [[email protected]]

通過上述測試我們可以得出結論:批量起別名的情況下,使用@Alias註解為某個型別指定新的別名,避免出現別名衝突報錯

=======歡迎大家拍磚,小手一抖,多多點贊喲!=======


相關推薦

司機學習MyBatis如何使用typeAliases別名@Alias註解

一、前言typeAliases是MyBatis中的別名處理器類,翻譯過來就是別名的意思。別名處理器的作用就是把Java型別,給它起一個簡單一點的別名,這樣我們在XML檔案中引入全類名的地方就可以使用別名

司機學習MyBatis動態SQL使用trim自定義字串擷取

一、前言前面一個章節講到,如果where標籤裡面,and或者or寫在後面,最後字串拼串後,如果最後一個條件沒有加上,可能會出現SQL多出 and或者or 的情形。那我們是不是沒有辦法解決這種問題的產生,事實上MyBatis為我們提供了另外一種標籤trim,可以簡單粗暴的解決這

司機學習MyBatis一級快取原理以及失效情況

一、前言MyBatis將資料快取設計成兩級結構,分為一級快取、二級快取:一級快取是Session會話級別的快取,位於表示一次資料庫會話的SqlSession物件之中,又被稱之為本地快取。一級快取是MyBatis內部實現的一個特性,使用者不能配置,預設情況下自動支援的快取,使用

司機學習MyBatisMyBatis如何使用Map處理引數

一、前言如果多個引數不是業務模型中的資料,沒有對應的POJO,為了方便,我們直接封裝成Map傳入。#{key}取出map中對應的值。二、案例在UserMapper.java增加查詢方法findUserB

Python學習筆記文件

關閉 write finall 存儲路徑 大文件 描述 可選參數 針對 硬盤 打開文件:open(name[,mode[,buffering]]),返回一個文件對象,模式(mode)和緩沖(buffering)是兩個可選參數。 假設有一個名為somefile.txt的文件,

ELK 學習筆記 elasticsearch ShardSegment概念

tran article str 寫到 ext 壓力 執行 details 學習筆記 Shard和segment概念: 轉載: http://blog.csdn.net/likui1314159/article/details/53217750 Shard(分片)

Zeppelin 學習筆記 Zeppelin安裝elasticsearch整合

XML exp ado 8.0 elk mage search tor 選擇 Zeppelin安裝: Apache Zeppelin提供了web版的類似ipython的notebook,用於做數據分析和可視化。背後可以接入不同的數據處理引擎,包括spark, hive,

(筆記)Linux內核學習(八)定時器時間管理

全局變量 define 結構 load 統計 object 一個 完成 溢出 一 內核中的時間觀念 內核在硬件的幫助下計算和管理時間。硬件為內核提供一個系統定時器用以計算流逝的時間。系 統定時器以某種頻率自行觸發,產生時鐘中斷,進入內核時鐘中斷處理程序中進行

Python 學習筆記 day4 sictset

變慢 現象 重復 不存在 取出 .get 操作 新的 運行 dict -- dictionary 一組key的集合,包含key與value的對應。 Python內置的字典,在其他語言中成為map,使用key-value存儲,具有幾塊的查找速度。 和li

機器學習入門使用numpymatplotlib繪制圖形

作用 應該 方式 9.png 5.1 環境 就是 清華大學 圖1   機器學習當中能深入淺出的方法第一步就是先學會用numpy了。numpy是一個第三方的開源python庫,他提供了許多科學的數值計算工具,尤其是大型矩陣計算,但使用配置非常簡單,結合matplotlib能夠

java學習筆記String,StringBuilderStringBuffer

String,StringBuilder和StringBuffer String是char[]+操作,由複製建立新物件進行操作,也就是char[]是不可變的,物件內容永不變。 StringBuilder是char[]+對此char[]陣列的操作,處理當前陣列不用複製重新建立,即ch

Sprng Cloud學習筆記單體架構微服務架構

微服務架構 目前微服務是非常火的架構或者說概念,也是在構建大型網際網路專案時採用的架構方式。 單體架構 一個歸檔包(可以是JAR、WAR、EAR或其它歸檔格式)包含所有功能的應用程式,通常稱為單體應用。單體架構中,所有的業務模組都編寫在一個專案中,最終打成war包執行。 軟體設計

Linux學習筆記1——檔案目錄管理(硬連線軟連線)(連結檔,相當於快捷方式)

在這節將要學習linux的連線檔,在之前用"ls -l" 檢視檔案屬性的命令時, 其中第二個屬性是連線數。那麼這個連線數是幹什麼的?這就要理解inode。     先說一下檔案是怎麼儲存的。檔案儲存在硬碟上,硬碟的最小儲存單位叫做"扇區"(Sector),每個扇區儲存512位元

齊學Python私有函式專有方法

在任何語言中,都會規定某些物件(屬性、方法、函式、類等)只能夠在某個範圍內訪問,出了這個範圍就不能訪問了。這是“公”、“私”之分。此外,還會專門為某些特殊的東西指定一些特殊表示,比如類的名字就不能用class,def等,這就是保留字。除了保留字,python中還為類的名字做了某些特殊準備,就是“專有

C++ 學習筆記——檔案操作檔案流

1. 檔案的概念 對於使用者來說,常用到的檔案有兩大類:程式檔案和資料檔案。而根據檔案中資料的組織方式,則可以將檔案分為 ASCII 檔案和二進位制檔案。 ASCII 檔案,又稱字元檔案或者文字檔案,它的每一個位元組放一個 ASCII 程式碼,代表一個字元。 二進位制檔案,又稱內部格式檔案或位元

Python學習手冊Python異常檔案

 在上一篇文章中,我們介紹了 Python 的函式和模組,現在我們介紹 Python 中的異常和檔案。  檢視上一篇文章請點選:https://www.cnblogs.com/dustman/p/9963920.html 異常和檔案 異常 異常也叫例外。在之前的幾篇文章中

Unity3D學習筆記碰撞器觸發器

碰撞器種類: Box Collider(盒碰撞器)——立方體 Sphere Collider(球碰撞器)——球體 Capsule Collider(膠囊碰撞器)——膠囊體 Mesh Collider(網格碰撞器)——從物體的網格建立一個碰撞器,不能與其他網格碰撞器相碰撞

Mybatis一級快取二級快取

Mybatis的快取 Mybatis的快取,包括一級快取和二級快取 一級快取是預設使用的。 二級快取需要手動開啟。 一級快取 一級快取指的就是sqlsession,在sqlsession中有一個數據區域,是map結構,這個區域就是一級快取區域。一級快取中的key

Java學習筆記——Manth類String類

  (1) Math:常用的數學運算,都是靜態方法 方法摘要  static double abs(double a)           返回 double 值的絕對值。

SpringCloud學習服務註冊服務發現Eureka入門服務消費者的搭建

建立消費者 1.pom檔案中新增eureka的豈步依賴 2.配置檔案新增eureka.client的相關配置 server.port=8080 #應用的名稱 spring.application.name=api-geteway eureka.client.se