Mybatis核心配置文件中有很多标签,它们谁谁写在前写在后其实是有顺序要求的:
从前到后:
properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?
像properties要在typeAliases之前,typeAliases要在mappers之前
<typeAliases>
<typeAlias type="com.atguigu.mybatis.pojo.User" alias="abc">typeAlias>
typeAliases>
typeAlias:设置某个类型的别名
属性:
type:设置需要的实体类型的别名
alias:设置某个类型的别名,若不设置该属性,默认别名为其类名且不区分大小写
typeAlias>
例如这个不写alias
,默认别名为User,不区分大小写
当实体类过多是,一般不采用一个个写typeAlias别名的做法,而是通过包设置别名。
<typeAliases>
<package name="com.atguigu.mybatis.pojo"/>
typeAliases>
package:以包为单位,将包下所有的类型设置默认的类型别名,即类名且不区分大小写
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
mappers>
mapper:引入mybatis的映射文件
❄️ke问题:当映射文件过多时,会出现与typeAlias
一样的问题。
☀️解决方法:使用package标签以包为单位引入映射文件,和typeAlias类似 。
<mappers>
<package name="com.atguigu.mybatis.mapper"/>
mappers>
package标签的使用有两个要求:
mapper接口所在的包要和映射文件所在的包一致
mapper接口要和映射文件的名字一致
注意上面映射文件这里com.atguigu.mybatis.mapper
是一个包,打开本地目录后是这样的,而不是一个文件夹名
怎么创建这样一个包呢??
为什么mapper接口文件和映射文件要设置为同一包目录??
因为这样最终加载完接口文件和映射文件是在同一目录下放在一起的。
部分内容来自 B站尚硅谷课程 。老师讲得很好,有兴趣的可以听听。