mybatis中關於type-aliases-package的使用

關於type-aliases-package的使用

springboot項目中的application.yml文件中的mybatis:type-aliases-package:什麼時候用

mapper.xml文件中resultMap的type、parameterType、resultType會引用一些實體類,我們需要寫上全限定類名,如果不寫全限定類名,隻寫一個實體類的名稱的話,那就需要在application.yml文件中設置mybatis:type-aliases-package參數;

怎麼寫application.yml中的mybatis:type-aliases-package

mybatis:    
type-aliases-package: com.atguigu.springcloud.entities #實體類所在的包

在配置好mybatis後,我們在mapper.xml映射文件中不需要寫出實體類的完整路徑,隻需要寫出類名即可

關於type-aliases-package使用的幾個問題

mapper.xml中的resultType中經常會用到一些自定義POJO,你可以用完全限定名來指定這些POJO的引用,例如

<select id="selectByStudentSelective" resultType="cn.wideth.entity.domain.Student">
     SELECT T.* FROM student T
</select>

我們需要查詢student表中所有學生的信息,定義瞭一個實體類student來映射表中所有的學生信息,把類的權限定類名放在resultType標簽中即可,mybatis底層在返回數據庫信息的時候,會根據Class.forName(“cn.wideth.entity.domain.Student”)去生成對象實例; 

如果我們想在resultType標簽中僅僅使用類名Student可不可以呢

   <select id="selectByStudentSelective" resultType="Student">
        SELECT T.* FROM student T
    </select>

這樣也是可以的,隻是需要在yml配置文件中提前進行配置

mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
  type-aliases-package: cn.wideth.entity

這樣也是可以的,springboot在啟動的時候,會加載cn.wideth.entity包以及子包下所有的實體類,進行初始化操作。但是不同子包下面不可以存在同名的實體類。

子包下面存在同名實體類,結果報錯瞭。

小結:盡量去使用實體類的全限定類名,這樣會減少程序出現問題。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: