Spring Boot MyBatis使用type-aliases-package自定義類別名
摘要:介紹MyBatis 中 type-aliases-package 屬性的作用。在Spring Boot項目中,使用屬性type-aliases-package為MyBatis引用的實體類自定義別名,避免使用又長又臭的完全限定名。
綜述
??用過mybatis的客官應該都知道,無論是使用resultType映射查詢到的結果集到一個實體類,還是使用parameterType基于Java Bean為SQL腳本傳參,都需要使用完全限定名(包名+類名)來指定引用了哪個Java Bean,否則啟動時會拋異常,提示找不到類。
??但是有些包名很長的,每次配置完全限定名就會顯得很長很麻煩,如下:
<select id="getUser" resultType="com.wiener.study.pojo.User" parameterType="int">
</select>
??我們可以通過type-aliases-package定義一個全限定名的別名來解決這個問題。
設置類的別名
??設置別名只需要在application.properties(yml)中指定別名掃描路徑即可:
mybatis:
type-aliases-package: com.wiener.demo.study.pojo # 具體到User類所在的目錄
??項目啟動的時候,mybatis會自動掃描指定包及其子包下的所有實體類并將別名裝配到上下文中,默認別名是類名和類名首字母小寫。例如,項目包含多個模塊,每個模塊(例如 study)都有自己的pojo,掃描多個包可以只寫到模塊的父級目錄:
mybatis:
type-aliases-package: com.wiener.demo # 具體到模塊study所在的父級目錄
??加上配置之后,只要resultType引用了這個包下的實體類,就可以直接用別名來代替全限定名,如下所示:
<select id="getUser" resultType="user" parameterType="int">
</select>
??類User為com.wiener.study.pojo包下的實體類,這里使用別名user即可。在上述配置的基礎上,還可以通過在實體類上加入@Alias注解來進一步設置別名:
@Alias("userMsg")
@Getter
@Setter
@ToString
public class User implements Serializable {
//實現serializable接口
private static final long serialVersionUID = -2241172936329900646L;
private String id;
private String password;
private String name;
}
此時,User類的別名被重定義為userMsg,select語句更新如下:
<select id="getUser" resultType="userMsg" parameterType="int">
</select>
??溫馨提示:在不同包下創建類的時候,不可以有重復命名的類!
Reference
讀后有收獲,小禮物走一走,請作者喝咖啡。
Buy me a coffee. ?Get red packets.作者:樓蘭胡楊
本文版權歸作者和博客園共有,歡迎轉載,但請注明原文鏈接,并保留此段聲明,否則保留追究法律責任的權利。

介紹MyBatis 中 type-aliases-package 屬性的作用。在Spring Boot項目中,使用屬性type-aliases-package為MyBatis引用的實體類自定義別名,避免使用又長又臭的完全限定名。
浙公網安備 33010602011771號