MyBatis 中 typeAliases 用于简化 XML 映射文件中的全限定类名,支持单个别名配置()和包扫描批量注册(,默认别名为类名首字母小写如 user),注册后可在 resultType、type 等处直接使用别名。

在 MyBatis 中配置 typeAliases 后,XML 映射文件里就不用写冗长的全限定类名(如 com.example.User),直接用别名(比如 User)即可,大幅提升可读性和维护性。
在 MyBatis 配置文件中注册别名
最常用方式是在 mybatis-config.xml 的 标签下配置 :
- 单个别名:指定一个类及其简短名称
- 批量扫描:让 MyBatis 自动为指定包下所有类注册默认别名(类名首字母小写)
示例:
<typealiases><typealias alias="User" type="com.example.model.User"></typealias><package name="com.example.model"></package></typealiases>
注意: 会为该包下每个类生成默认别名——类名首字母小写(如 User 类对应别名 user),但不区分大小写匹配,实际使用时建议统一用 PascalCase(如 User)更清晰。
在 XML 映射文件中直接使用别名
配置生效后,在 、、 等地方,直接写别名即可:
<select id="selectUserById" resulttype="User">
SELECT * FROM user WHERE id = #{id}
</select><p><resultmap id="userResultMap" type="User"><id property="id" column="id"></id><result property="username" column="username"></result></resultmap></p>
只要别名注册成功,MyBatis 就能自动解析为对应类。如果别名冲突(比如两个包都有 User 类),建议显式定义别名避免歧义。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
通过注解方式在 Mapper 接口上配置别名(可选)
如果你用的是接口式编程(没有 XML),也可以在实体类上加 @Alias 注解:
@Alias("User")
public class User {
private Long id;
private String username;
// ...
}
这样即使没在 XML 里配置,MyBatis 扫描到该类时也会识别这个别名。适合模块化项目或不想修改全局配置的场景。
验证别名是否生效的小技巧
启动时开启 MyBatis 日志(如 log4j 或 SLF4J),查看类似日志:
Registered alias 'User' for class 'com.example.model.User'
如果查询时报错 Cannot find class 'User',常见原因有:
- 别名拼写错误(区分大小写?默认别名是小写,但 MyBatis 实际匹配不敏感)
-
路径未包含目标类(检查包路径、是否被排除编译) - 配置文件未被正确加载(确认
SqlSessionFactoryBean或SqlSessionFactoryBuilder加载了该配置)
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










