Mybatis核心配置文件解读——typeAliases与mappers

158 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天

MyBatis核心配置文件中的标签有顺序要求,要特别注意:

properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers

typeAliases

typeAliases,别名标签,为长属性(比如pojo下类的全类名)做别名,更方便在定义语句时引用:

<typeAliases>
    <typeAlias type="com.hexiaoxing.mybatis.pojo.User" alias="User"></typeAlias>
</typeAliases>

这样配置好以后,在整个mybatis的配置文件中,都可以通过别名的方式来简写

<select id="findUserById" resultType="com.hexiaoxing.mybatis.pojo.User">
    select * from table where id = 0
</select>
<!--resultType属性替换为👇-->
<select id="findUserById" resultType="User">
    select * from table where id = 0
</select>

注意:

  • 类型别名不区分大小写,也就是说,user和User是一样的效果,在定义时要尤其注意
  • 如果在定义别名时,不写alias属性,那么它的别名默认为是对应的类名,而且不区分大小写,也就是说只能通过User来使用

既然类名可以作为自己的默认别名,那么我们可以通过package标签来更方便地定义其包下所有类的别名:

<package name="com.hexiaoxing.mybatis.pojo"/>

这样pojo包下所有的类都设置了默认别名,即它们自己的类名,且区分大小写

mappers

mappers下的mapper用来配置映射文件,我们之前是这样配置的:

<mappers>
    <mapper resource="mappers/UserMapper.xml"/>
 </mappers>

但如果映射文件过多则看起来杂乱,引入繁琐,我们就可以像别名标签一样通过package为单位进行引入:

<mappers>
    <mapper resource="com.hexiaoxing.mybatis.mapper"/>
 </mappers>

这样,整个包下的映射文件就可全部引入

但要注意以下两点:

  1. mapper接口所在的包要和映射文件所在的包一致(注意不是必须在一个包里,而是一个在java目录下,一个在resources目录下,只是其包的全类名一致)
  2. mapper接口和映射文件的名字要一致