MyBatis核心配置文件中的标签必须要按照指定的顺序配置
properties->setting->typeAliases->typeHandlers->objectFactory->objectWrapperFactory->reflectorFactory->plugins->environments->databaseIdProvider->mappers
typeAliases标签
typeAliases类型别名,resultType每次写的都是全路径类名,这时我们就可以利用这个标签设置别名,在使用resultType的时候,就可以使用我们的别名,注意上面所说的配置顺序
<typeAliases>
<!-- type属性是为谁做别名 alias属性是我们自己设置的别名-->
<typeAlias type="com.tdh.mybatis.pojo.User" alias="User"/>
</typeAliases>
修改mapper.xml中的resultType为User
<select id="getListUser" resultType="User">
select * from t_user
注意在公司中正常的开发环境下这个 * 是绝对不允许出现的
</select>
运行测试方法,发现没有问题
也可以只写type属性,不写alise属性,这样mybatis会默认使用type指向的类名来做别名,同时不区分大小写
我们还可以通过包来设置别名,指定包下的所有类型都将全部拥有默认的别名
<typeAliases>
<!-- 我们正常开发的时候会有一个包专门存放这些需要写别名的类,往往是实体类,这时直接使用package即可为该包下的所有类创建默认别名-->
<package name="com.tdh.mybatis.pojo"/>
</typeAliases>
mappers标签
mappers引入mybatis的映射文件
正常使用情况如下:
<!-- 引入mybatis的映射文件-->
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
但是这种情况下每次创建一个mapper映射文件都会写一行代码,太过复杂,与别名类似也可以使用package标签来引入一个包下的配置文件,但是要注意的是如果使用package去配置,必须满足mapper接口与映射文件所在的包必须一致的同时mapper接口的名字和映射文件的名字必须一致,更重要的是在resource目录下创建包一定要逐层床创建,不然无法显示层级关系
当不是用package标签只是用mapper标签的时候,目录结构可以是如下结构
当使用package以后resources目录下的mapper映射文件的目录结构必须与java目录下的mapper文件的目录结构相同,也就是如下,注意目录一定要逐层创建
<!-- 引入mybatis的映射文件-->
<mappers>
<package name="com.tdh.mybatis.mapper"/>
</mappers>
也可以不逐层创建使用/进行创建,不能使用.进行创建
在测试类中运行测试方法,发现可以正常运行