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。
推薦閱讀:
- mybatis中mapper-locations的作用
- 解決SpringBoot整合MybatisPlus分模塊管理遇到的bug
- spring boot寫java web和接口
- 關於mybatis resulttype 返回值異常的問題
- SpringBoot整合Mybatis與MybatisPlus方法詳細講解