MyBatis配置文件大致如下:
我们使用MyBatis的大致程序框架如下:
- 使用
SqlSessionFactoryBuilder
构建一个SqlSessionFactory
实例 - 使用
SqlSessionFactory
开启一个会话SqlSession
(真正的数据库连接在Transaction
里面) - 使用
SqlSession
执行mapper对应的SQL - 处理结果
- 关闭会话
SqlSessionFactoryBuilder
其实是一个工具类,没有实例字段,只有不同形式的build()
方法。
所以,真正的解析工作还是在XMLConfigBuilder
。我们下面来看看不同节点的解析流程。
properties
我们可以在配置文件中定义一些属性,也可以引用外部定义的Java属性文件。
⚠️注意:
- resource和url最多只能选一个,否则会报错
- 我们最多能引用一个外部Java属性文件
- 所有这些属性会合并,然后被设置为
Configuration.varaiables
字段,用于后续的属性替换
settings
这些设置会被反射到Configuration
对应的setter方法,如:cacheEnabled映射到setCacheEnabled()
方法。如果某个设置通过反射没有找到对应的setter方法,那么将抛出异常。
typeAliases
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
MyBatis内置的类型别名有:
_byte => byte | _long => long | _short => short | _int => int |
_integer => int | _double => double | _float => float | _boolean => boolean |
byte => Byte | long => Long | short => Short | int => Integer |
integer => Integer | double => Double | float => Float | boolean => Boolean |
string => String | date => Date | decimal => BigDecimal | bigdecimal => BigDecimal |
object => Object | map => Map | hashmap => HashMap | list => List |
arraylist => ArrayList | collection => Collection | iterator => Iterator | … |