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源码篇)