Mybatis源码分析(八):mybatis常用类型默认别名

写在前面:本节还是对上一节别名属性typeAliases源码分析的补充内容,目的就是让大家彻底深入理解mybatis源码,方便大家的使用和扩展!

在使用mybatis时候,很少去配置别名!那么别名用的最多的地方就是mapper.xml 文件中  书写sql时,比如:

<select id="selectByPrimaryKey"  resultType="string" parameterType="int" >
SELECTT * FROM TABLE_NAME
</select>

Sql语句配置resultType和parameterType的所使用的类型别名时,很多人在犹豫这个类型的别名用什么呢?其实没有配置的情况下,mybatis提供了一套别名对应关系,这里给大家总结了下,给大家参考用。如下:

区分类型别名
基本类型的包装对象String.classstring
Byte.classbyte
Short.classshort
Integer.classint
Integer.classinteger
Double.classdouble
Float.classfloat
Boolean.classboolean
基本类型的包装对象数组Byte[].classbyte[]
Long[].classlong[]
Short[].classshort[]
Integer[].classint[]
Integer[].classinteger[]
Double[].classdouble[]
Float[].classfloat[]
Boolean[].classboolean[]
基本类型byte.class_byte
long.class_long
short.class_short
int.class_int
int.class_integer
double.class_double
float.class_float
boolean.class_boolean
基本类型数组byte[].class_byte[]
long[].class_long[]
short[].class_short[]
int[].class_int[]
int[].class_integer[]
double[].class_double[]
float[].class_float[]
boolean[].class_boolean[]
部门对象Date.classdate
BigDecimal.classdecimal
BigDecimal.classbigdecimal
BigInteger.classbiginteger
Object.classobject
Date[].classdate[]
BigDecimal[].classdecimal[]
BigDecimal[].classbigdecimal[]
BigInteger[].classbiginteger[]
Object[].classobject[]
Map.classmap
HashMap.classhashmap
List.classlist
ArrayList.classarraylist
Collection.classcollection
Iterator.classiterator
ResultSet.classResultSet

上面这些常用类型别名的配置源码在哪里了?

 

上节分析了别名相关源码(配置属性typeAliases和typeAliasesPackage),其中提到一个类TypeAliasRegistry。这个类就是别名包装类,源码如下:

public TypeAliasRegistry() {

   registerAlias("string", String.class);
   registerAlias("byte", Byte.class);
   registerAlias("long", Long.class);
   registerAlias("short", Short.class);
   registerAlias("int", Integer.class);
   registerAlias("integer", Integer.class);
   registerAlias("double", Double.class);
   registerAlias("float", Float.class);
   registerAlias("boolean", Boolean.class);

   registerAlias("byte[]", Byte[].class);
   registerAlias("long[]", Long[].class);
   registerAlias("short[]", Short[].class);
   registerAlias("int[]", Integer[].class);
   registerAlias("integer[]", Integer[].class);
   registerAlias("double[]", Double[].class);
   registerAlias("float[]", Float[].class);
   registerAlias("boolean[]", Boolean[].class);

   registerAlias("_byte", byte.class);
   registerAlias("_long", long.class);
   registerAlias("_short", short.class);
   registerAlias("_int", int.class);
   registerAlias("_integer", int.class);
   registerAlias("_double", double.class);
   registerAlias("_float", float.class);
   registerAlias("_boolean", boolean.class);

   registerAlias("_byte[]", byte[].class);
   registerAlias("_long[]", long[].class);
   registerAlias("_short[]", short[].class);
   registerAlias("_int[]", int[].class);
   registerAlias("_integer[]", int[].class);
   registerAlias("_double[]", double[].class);
   registerAlias("_float[]", float[].class);
   registerAlias("_boolean[]", boolean[].class);

   registerAlias("date", Date.class);
   registerAlias("decimal", BigDecimal.class);
   registerAlias("bigdecimal", BigDecimal.class);
   registerAlias("biginteger", BigInteger.class);
   registerAlias("object", Object.class);

   registerAlias("date[]", Date[].class);
   registerAlias("decimal[]", BigDecimal[].class);
   registerAlias("bigdecimal[]", BigDecimal[].class);
   registerAlias("biginteger[]", BigInteger[].class);
   registerAlias("object[]", Object[].class);

   registerAlias("map", Map.class);
   registerAlias("hashmap", HashMap.class);
   registerAlias("list", List.class);
   registerAlias("arraylist", ArrayList.class);
   registerAlias("collection", Collection.class);
   registerAlias("iterator", Iterator.class);

   registerAlias("ResultSet", ResultSet.class);
 }

typeAliases相关的源码分析就到这里了,下一节对主要对typeHandler类型转换器进行源码分析,以及自定义类型转换器的实战!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值