以前一直體會不到typealiases的作用,今天遇到了問題!
問題描述
Mybatis有個代碼生成工具,生成的代碼裏面有mapper.xml文件,mapper.xml中的sql語句會用parameterType這個屬性,而這個值可能是我們自定義的對象,此時,如果沒有typealiases,我們就需要爲parameterType指定全路徑:
<span style="font-size:14px;"><select id="getStudent" parameterType="com.csct.domain.StudentEntity" resultType="com.csct.domain.StudentEntity" resultMap="studentResultMap"></span>
代碼自動生成工具生成的mapper.xml文件中不帶全路徑,那麼,如果有三、四十個實體對象,我們豈不是要修改的地方太多了。
解決辦法
這個時候,我們是不是很期望有一個方式,能把com.csct.domain下的實體全部給加載進來,mapper.xml遇到不識別的類就在這裏查找呢?你都想到了,Mybatis當然也能想到吧,typealiases就是爲此而生的。使用特簡單,如下:
<span style="font-size:14px;"><configuration>
<typeAliases>
<!--
通過package, 可以直接指定package的名字, mybatis會自動掃描你指定包下面的javabean,
並且默認設置一個別名,默認的名字爲: javabean 的首字母小寫的非限定類名來作爲它的別名。
也可在javabean 加上註解@Alias 來自定義別名, 例如: @Alias(user)
<package name="com.dy.entity"/>
-->
<typeAlias alias="UserEntity" type="com.dy.entity.User"/>
</typeAliases>
......
</configuration></span>
這樣,mapper.xml的sql語句就如下了:
<span style="font-size:14px;"><select id="getStudent" parameterType="StudentEntity" resultType="StudentEntity" resultMap="studentResultMap"></span>
哦了,完事收工~