MyBatis的XML配置文件包含了影响MyBatis行为甚深的设置和属性信息. XML文档
的高层级结构如下:
-
<李>配置配置
-
<李>属性属性李>
<李>设置设置李>
<李> typealias类型命名李>
<李> typeHandlers类型处理器李>
<李> objectFactory对象工厂李>
<李>插件插件李>
<李>环境环境李>
<李>环境环境变量李>
<李> transactionManager事务管理器李>
<李>数据源数据源李>
<李>映射器
& lt; br/祝辞李> 李
属性
这些是外部化的,可替代的属性,这些属性也可以配置在典型的Java属性配置文件中,或者通过属性元素的子元素来传递。
引用>例如:
<代码> & lt;属性资源=癹dbc.properties祝辞& lt;/properties> 代码>其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。
比如:<代码> & lt;数据源类型=盎慵北? & lt;属性名="司机" value=" https://www.yisu.com/zixun/${司机}"/比; & lt;属性名=" url " value=" https://www.yisu.com/zixun/$ {url} "/比; & lt;属性名="用户名" value=" https://www.yisu.com/zixun/$ {username} "/比; & lt;属性名="密码" value=" https://www.yisu.com/zixun/${密码}"/比; & lt;/dataSource> 代码>属性将会从包含进来的jdbc。属性文件中的值来替换。
& lt; br/祝辞设置
下面这个表格描述了设置信息,它们的含义和默认值。
一个设置信息元素的示例,完全的配置如下所示:
<代码> & lt; settings> & lt;设置name=" cacheEnabled " value=" https://www.yisu.com/zixun/true "/比; & lt;设置name=" lazyLoadingEnabled " value=" https://www.yisu.com/zixun/true "/比; & lt;设置name=" multipleResultSetsEnabled " value=" https://www.yisu.com/zixun/true "/比; & lt;设置name=" useColumnLabel " value=" https://www.yisu.com/zixun/true "/比; & lt;设置name=" useGeneratedKeys " value=" https://www.yisu.com/zixun/false "/比; & lt;设置name=" enhancementEnabled " value=" https://www.yisu.com/zixun/false "/比; & lt;设置name=" defaultExecutorType " value=" https://www.yisu.com/zixun/SIMPLE "/比; & lt;设置name=" defaultStatementTimeout " value=" https://www.yisu.com/zixun/25000 "/比; & lt;/settings> 代码>typealias
类型别名是为Java类型命名一个短的名字。它只和XML配置有关,只用来减少类完全限定名的多余部分。
引用>例如:
<代码> & lt; typeAliases> & lt; typeAlias别名="用户" type=" com.mu.mybatis.domain.User "/比; & lt;/typeAliases> 代码>使用这个配置,“用户”可以任意用来替代“com.mu.mybatis.domain.User”所使用的地方。
typeHandlers
无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处理器被用来将获取的值以合适的方式转换成Java类型。下面这个表格描述了默认的类型处理器。
你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。要这样做的话,简单实现TypeHandler接口(org.mybatis。类型),然后映射新的类型处理器类到Java类型,还有可选的一个JDBC类型,例如:
<代码>//ExampleTypeHandler.java 公共类ExampleTypeHandler实现TypeHandler { 公共空间setParameter (PreparedStatement ps, int i,对象参数,JdbcType JdbcType) throws SQLException { ps.setString(我,(字符串)参数); } 公共对象getResult (ResultSet rs、字符串columnName) throws SQLException { 返回rs.getString (columnName); } 公共对象getResult (CallableStatement cs, int columnIndex) throws SQLException { 返回cs.getString (columnIndex); } }//MapperConfig.xml & lt; typeHandlers> & lt; typeHandler将javaType=白址眏dbcType=癡ARCHAR” 处理程序=" org.mybatis.example.ExampleTypeHandler "/比; & lt;/typeHandlers> 代码>使用这样的类型处理器将会覆盖已经存在的处理Java的String类型属性和VARCHAR参数及结果的类型处理器。要注意MyBatis不会审视数据库元信息来决定使用哪种类型,所以你必须在参数和结果映射中指定那是VARCHAR类型的字段,来绑定到正确的类型处理器上。这是因为MyBatis直到语句被执行都不知道数据类型的这个现实导致的。
02. mybatis的xml映射配置文件