爱情不是你想买,想买就能买;
MyBatis 不是你想起,想起就能起……
我承认我唱歌只有一个调。
今儿心情还不错,吐了个槽,还希望大家不要介意。
话说,我最近一直在研究 MyBatis ,研究 MyBatis ,必然逃不了研究 Configuration 对象,这个对象简直是太重要了,它是 MyBatis 起步的核心环境配置,下面我们来一起看一下 Configuration 类
Configuration 的创建
如果你喜欢一个妹子,你是不是闲得问清楚妹子住在哪?只加微信那就只能望梅止渴,主动出击才是硬道理。否则,就算你租了一辆玛莎拉蒂,你都不知道在哪装B。
想要了解 Configuration,得先问清楚它是如何创建的。
在这之前,我先告诉你一个 MyBatis 的入口类,那就是 SqlSessionFactoryBuilder, 为什么要介绍这个类哦?因为这个类可以创建 SqlSession,想要孩子?没有Builder 的功能怎么行?它的创建在这里
![13967779819162300adf7c6f6b7e4e83.png](https://i-blog.csdnimg.cn/blog_migrate/aa94a3a80f89e62bf5a382797456b24a.jpeg)
SqlSessionFactoryBuilder 在创建完成 XMLConfigBuilder 之后,会完成 Configuration 的创建工作,也就是说Configuration 对象的创建是在 XMLConfigBuilder 中完成的 ,如下图
![32ec11e5d40ef194fee5d9838aecaf61.png](https://i-blog.csdnimg.cn/blog_migrate/2b8cdbd9e27212129edcf84d09e31b16.jpeg)
看到这里,你是不是有点跃跃欲试想要按住 control 键点进去?如你所愿,看一下 new Configuration 到底生出个什么东西
![98be9975a92b2ac19dd482fde14467e4.png](https://i-blog.csdnimg.cn/blog_migrate/5aedcc1961a678be292674759d99b969.jpeg)
这就是初始化 Configuration 完成的工作了,图中还有一个很关键的类就是 TypeAliasRegistry, 想要注册?你得先知道 “我” 是谁 。
TypeAliasRegistry 在Configuration 创建的时候就被初始化了
protected final TypeAliasRegistry typeAliasRegistry = new TypeAliasRegistry();
so? 看一下 new 都做了一些什么事情
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); regi