這里我們貼出之前的UserDao對應的mapper文件,如下所示
從這個配置文件中,我們可以看到<select>、<insert>和<update>三個標簽元素的resultType都是User對象,需要設置這個User對象的類全限定名,即packname.classname。
我們發現一個問題,那就是這個類名,我們需要寫多次,如果要改這個類名的話,我們需要在多個地方進行修改。很明顯,這樣配置的話很容易造成修改上的遺漏,同時也書寫上也比較麻煩。因此,MyBatis為我們提供了一個簡單方便的配置方法,那就是使用<typeAliases>標簽元素,給實體類設置一個別名。
如上所示,我們在原來的mybatis配置文件中增加了<typeAliases>標簽,並將com.majing.learning.mybatis.entity.User這個實體類重命名為User,然后我們在mapper配置文件中就可以如下使用了。
這樣即使實體類名修改了,所需要修改的地方也只有一處,便於集中管理。
也許你會有疑問,如果實體類比較多怎么辦?還不是要配置很多實體類和別名,NO,NO,NO!下面跟大家說說另一種配置方法。
在這里,我們不再使用<typeAliases>標簽下<typeAliase>,而是使用<package>標簽,表示掃描該包名下的所有類(除了接口和匿名內部類),如果類名上有注解,則使用注解指定的名稱作為別名,如果沒有則使用類名首字母小寫作為別名,如com.majing.learning.mybatis.entity.User這個類如果沒有設置@Alias注解,則此時會被關聯到user這個別名上。
因此,按照上面的配置,我們還需要將實體類做一下調整,如下兩種方式所示:
(1)給實體類添加@Alias注解
(2)實體類不加注解的情況下,修改mapper文件中引用的類型別名,改為小寫,如下所示
最后想說,mybatis為我們已經實現了很多別名,已經為許多常見的 Java 類型內建了相應的類型別名。它們都是大小寫不敏感的,需要注意的是由基本類型名稱重復導致的特殊處理。
至此,關於別名的全部使用方法這里便介紹完成了