这篇文章主要介绍了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包以及子包下所有的实体类,进行初始化操作。但是不同子包下面不可以存在同名的实体类。
子包下面存在同名实体类,结果报错了。
小结:尽量去使用实体类的全限定类名,这样会减少程序出现问题。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程学习网。
本文标题为:mybatis中关于type-aliases-package的使用
基础教程推荐
- java实现多人聊天系统 2023-05-19
- Java实现查找文件和替换文件内容 2023-04-06
- Java文件管理操作的知识点整理 2023-05-19
- Java实现线程插队的示例代码 2022-09-03
- Java并发编程进阶之线程控制篇 2023-03-07
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- java基础知识之FileInputStream流的使用 2023-08-11
- Java数据结构之对象比较详解 2023-03-07
- springboot自定义starter方法及注解实例 2023-03-31
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02