MyBatis别名

Posted 欲戴王冠.必承其重

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis别名相关的知识,希望对你有一定的参考价值。

Spring的别名管理比较规范,有严格的接口规范,SimpleAliasRegistry实现 -> AliasRegistry接口,而且是线程安全的,Map也用的是ConcurrentHashMap,key是String,value是String,而且可以循环引用。

mybatis的别名管理器是TypeAliasRegistry类,个人感觉有点不规范,可能是看Spring源码看多了,线程不安全,Map用的是普通的HashMap,key是String,value是Class<?>,没有循环引用问题。

先从TypeAliasRegistry构造函数开始,先注册一些别名:

8大基本数据类型的添加,加了一个下划线"_"

8个基本数据类型的包装类型

和一些集合框架常用的类的别名。

再看Configuration的构造函数,注册了一些常用的别名。

还有一个途径就是,mybatis-config.xml文件中配置typeAlias标签,

有两种方式,直接定义别名使用"alias"与"type",另一种是扫描包方式使用"package",该包下使用@Alias注解,都会注册进管理器中。

 

从方法开始:Class<T> resolveAlias(String string) ;

内部实现是先从Map中获取,获取到就返回,获取不到就把这个字符串当做类的全限定名,使用Class<?> c = Class.forName方法返回。

以上是关于MyBatis别名的主要内容,如果未能解决你的问题,请参考以下文章

mybatis定义别名typealias和package的区别

深入浅出Mybatis系列---配置详解之typeAliases别名(mybatis源码篇)

MyBatis-----初识MyBatis--封装---别名---properties

11 MyBatis——别名设置

MyBatis的别名注解失效问题

Mybatis从入门到入土——别名配置文件以及引入mapper