Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)

此章主要介绍sqlMapConfiguragion.xml的核心配置属性。

mybatis、mappers、Environments、ObjectFactory、typeHandlers、Properties、Settings、typeAliases、Plugins

mybatis核心

Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)_第1张图片

MyBatis的xml配置文件包含了设置和影响MyBatis行为的属性,XML配置文件的层次饥结构如下:

Configuration

    Properties属性

    Settings设置

    typeAliases类型别名

    typeHandlers类型处理器

    ObjectFactory对象工厂

    Plugins插件

    Environments环境

           Environment环境变量

                  transactionManager事物管理器

                  datasource数据源

    mappers映射器

基本配置项:




   …其他配置项


注意:

       MyBatis 将按照下面的顺序来加载属性:

       在  properties素体内定义的属性首先被读取。

       然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。

       最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

建议:

       不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

       在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

Properties属性

作用:这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的 Java 属性配置文件中, 或者通过 properties 元素的子元素来传递


	
	

Settings的设置

mybatis框架在运行时可以调整一些运行参数。

settings是极其重要的配置, 它们会修改 MyBatis 在运行时的行为方式。

设置选项 描述 可用值 默认值
cacheEnabled

全局性地启用或禁用所有在 mapper

置文件
true|false true
lazyLoadingEnabled

全局性地启用或禁用延迟加载。当禁用

true|false true
aggressiveLazyLoading

当启用后,一个有延迟加载属性的对象的任何一个延迟属性被加载时,该对象

的所有的属性都会被加载。否则,所有 属性都是按需加载。
true|false true
multipleResultSetsEnabled 允许或禁止从单一的语句返回多个结果 集(需要驱动程序兼容)。 true|false true
useColumnLabel

使用列的标签而不是列的名称。在这方面,不同的驱动程序可能有不同的实

现。参考驱动程序的文档或者进行测试来确定您所使用的驱动程的行为

true|false true
useGeneratedKeys

允许JDBC自动生成主键。需要驱动程序兼容。如果设置为 true则会强行自

动生成主键,然而有些则不会自动生
true|false False
autoMappingBehavior

指定MyBatis是否以及如何自动将列映射到字段/属性。

PARTIAL:只是自动映射简单、非嵌套的结果集。

NONE,PARTIAL,

FULL
PARTIAL
defaultExecutorType

配置默认的执行器(executor)。SIMPLE:简单的执行器。

REUSE:重用preparedstatements执行器。

SIMPLEREUSE

BATCH
SIMPLE
defaultStatementTimeout 设置查询数据库超时时间。 任何正整数

NotSet(null)


注:一般情况下我们不需要特别指定,都使用的是默认值除非特殊需要自己指定状态值。

具体配置如下


	
		
	

typeAliases类型别名

定义类型别名的意义以及用途:

mapper.xml中,定义很多的statementstatement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。例如查询结果返回的是一个user对象,此处可以定义一个user bean,然后入参或者返回参数可以指定为alias的定义的别名user即可。

1、单个定义别名



	
		
		
	


2、批量定义别名(常用)


	
		
		
	

typeHandlers类型处理器

说明:mybatis中通过typeHandlers完成jdbc类型和java类型的转换。通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义mybatis支持类型处理器

Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)_第2张图片

ObjectFactory对象工厂

   MyBatis每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。默认情况下,我们不需要配置,mybatis会调用默认实现的objectFactory。除非我们要自定义ObjectFactory的实现,那么我们才需要去手动配置。

//   ExampleObjectFactory.java
public class ExampleObjectFactory extends DefaultObjectFactory { public Object create(Class type) {
return super.create(type);
}
public Object create(
 

Class type,
List constructorArgTypes, List constructorArgs) {
return super.create(type, constructorArgTypes, constructorArgs);
}
public void setProperties(Properties properties) { super.setProperties(properties);
}
}
 
  

// MapperConfig.xml


     

ObjectFactory接口非常简单,它包含两个create的方法,一个是默认构造器,还有一个是含参数的构造器。最后的setProperties方法用来配置ObjectFactory。在初始化您自己的ObjectFactory实例之后,定义在objectFactory元素主体中的属性会以参数的形式传递给setProperties方法。

Plugins插件

   plugins是一个可选配置。mybatis中的plugin其实就是个interceptor它可以拦截ExecutorParameterHandlerResultSetHandlerStatementHandler的部分方法,处理我们自己的逻辑。Executor就是真正执行sql语句的东西, ParameterHandler是处理我们传入参数的,还记得前面讲TypeHandler的时候提到过,mybatis默认帮我们实现了不少的typeHandler,当我们不显示配置typeHandler的时候,mybatis会根据参数类型自动选择合适的typeHandler执行,其实就是ParameterHandler在选择。ResultSetHandler就是处理返回结果的。

Environments环境

      
               
                   
                   
                   
                       
                       
                       
                       
                       
                   
               
           

mapper映射器

第一种加载方式:通过resource加载单个映射文件

xml配置


     
        
     

 
  

第二种加载方式:通过mapper接口加载单个mapper

特别注意的是:通过mapper接口加载单个映射文件

遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中

         上边规范的前提是:使用的是mapper代理方法

配置文件


	
		
	



第三种加载方式:批量加载mapper(推荐使用)


  批量加载mapper指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载

遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中

上边规范的前提是:使用的是mapper代理方法


	
		
	
 


mybatis默认支持别名


Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)_第3张图片


sql映射XML文件


MyBatis真正强大之处就在这些映射语句,也就是它的魔力所在。对于它的强大功能,SQL射文件的配置却非常简单

  cache–在特定的命名空间配置缓存。

  cache-ref  引用另外一个命名空间配置的缓存.

  resultMap   强大来描据库载对

  parameterMap  使! 使用,这来可会被再进

 

  sql 句重用的SQL块。

       insert INSERT语句

       updateUPDATE映射语句

       delete DELEETE语句

select SELECT语句 接将会素进



你可能感兴趣的:(mybatis)