所谓属性就是一个一个的key-value对,接下来可通过属性名(key)来引用属性值(value)。MyBatis允许在3个地方配置属性:
使用额外的属性文件配置,再使用<properties…/>元素加载该属性文件。
在<properties…/>元素中使用<property…/>子元素配置,每个<property…/>子元素配置一个属性。
在SqlSessionFactoryBuilder的build()方法中传入Properties参数。
build()方法 > 额外属性文件 > <property…/>子元素
使用${属性名}引用属性值
为引用的属性指定默认值的语法格式为:
${属性名:默认值}
MyBatis有一些全局行为需要设置,比如是否使用缓存,日志设置等,这些设置都放在<settings…/>元素中设置,每个<setting…/>子元素配置一个设置。
为避免为每个类指定全限定类名,MyBatis允许在<typeAliases…/>元素内通过如下两个元素为Java类型指定别名:
<typeAlias…/>:为单个的Java类指定别名。
<package…/>:为指定包下所有Java类集中指定别名。
为了简化开发,MyBatis默认已经为常见的Java类型提供了别名。
MyBatis需要为每行记录创建一个对象,该对象由对象工厂(Object Factory)负责创建。
MyBatis内置了DefaultObjectFactory作为对象工厂。
为MyBatis开发自定义对象工厂只需两步即可。
- 定义实现ObjectFactory接口的对象工厂类
- 在MyBatis核心配置文件中使用<objectFactory…/>元素注册对象工厂。
- 为<mapper…/>指定resource属性加载Mapper:这种方式会基于类加载路径来定位XML Mapper文件。
为<mapper…/>指定url属性加载Mapper:这种方式根据URL来定位XML Mapper文件。通过这种方式可使用file://协议加载指定磁盘路径的Mapper。(少用)
<mapper…/>指定class属性加载Mapper:这种方式的class属性值为Mapper接口。
使用<package…/>元素加载指定包下所有Mapper:这种方式可加载指定包下所有Mapper。
类型处理器(Type Handler)负责处理Java类型与数据库类型之间的转换。
MyBatis内置了大量的类型转换器。