MyBatis教程之二的配置文件详解

来源:互联网 发布:时尚好听的网络歌曲 编辑:程序博客网 时间:2024/06/05 14:48

MyBatis的配置文件中configuration标签,可以包含以下标签:

1、properties 属性

加载外部文件,可以通过${key}获取对应的值一般用来加载数据库配置文件<properties resource="dbconfig.properties"/>

2、settings 设置

这里写图片描述
这里写图片描述
这里写图片描述

3、typeAliases 类型别名

<!--别名,主要是为mapper文件中的参数的类型写上简称  -->   <typeAliases>        <!--为单个的类写别名  -->        <!-- <typeAlias alias="Student" type="org.qf.domain.Student"/> -->        <!--为整个包设置,这样的话mapper文件使用改包的类就可以直接使用无需包名  -->        <package name="org.qf.domain"/></typeAliases>

4、typeHandlers 类型处理器

类型处理器   Java 类型 JDBC 类型BooleanTypeHandler  java.lang.Boolean, boolean  数据库兼容的 BOOLEANByteTypeHandler java.lang.Byte, byte    数据库兼容的 NUMERIC 或 BYTEShortTypeHandler    java.lang.Short, short  数据库兼容的 NUMERIC 或 SHORT INTEGERIntegerTypeHandler  java.lang.Integer, int  数据库兼容的 NUMERIC 或 INTEGERLongTypeHandler java.lang.Long, long    数据库兼容的 NUMERIC 或 LONG INTEGERFloatTypeHandler    java.lang.Float, float  数据库兼容的 NUMERIC 或 FLOATDoubleTypeHandler   java.lang.Double, double    数据库兼容的 NUMERIC 或 DOUBLEBigDecimalTypeHandler   java.math.BigDecimal    数据库兼容的 NUMERIC 或 DECIMALStringTypeHandler   java.lang.String    CHAR, VARCHARClobReaderTypeHandler   java.io.Reader  -ClobTypeHandler java.lang.String    CLOB, LONGVARCHARNStringTypeHandler  java.lang.String    NVARCHAR, NCHARNClobTypeHandler    java.lang.String    NCLOBBlobInputStreamTypeHandler  java.io.InputStream -ByteArrayTypeHandler    byte[]  数据库兼容的字节流类型BlobTypeHandler byte[]  BLOB, LONGVARBINARYDateTypeHandler java.util.Date  TIMESTAMPDateOnlyTypeHandler java.util.Date  DATETimeOnlyTypeHandler java.util.Date  TIMESqlTimestampTypeHandler java.sql.Timestamp  TIMESTAMPSqlDateTypeHandler  java.sql.Date   DATESqlTimeTypeHandler  java.sql.Time   TIMEInstantTypeHandler  java.time.Instant   TIMESTAMPLocalDateTimeTypeHandler    java.time.LocalDateTime TIMESTAMPLocalDateTypeHandler    java.time.LocalDate DATELocalTimeTypeHandler    java.time.LocalTime TIMEOffsetDateTimeTypeHandler   java.time.OffsetDateTime    TIMESTAMPOffsetTimeTypeHandler   java.time.OffsetTime    TIMEZonedDateTimeTypeHandler    java.time.ZonedDateTime TIMESTAMPYearTypeHandler java.time.Year  INTEGERMonthTypeHandler    java.time.Month INTEGERYearMonthTypeHandler    java.time.YearMonth VARCHAR or LONGVARCHARJapaneseDateTypeHandler java.time.chrono.JapaneseDate   DATE

5、objectFactory 对象工厂

MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现ObjectFactory 接口很简单,它包含两个创建用的方法,一个是处理默认构造方法的,另外一个是处理带参数的构造方法的。 最后,setProperties 方法可以被用来配置 ObjectFactory,在初始化你的 ObjectFactory 实例后, objectFactory 元素体中定义的属性会被传递给 setProperties 方法

6、plugins 插件

通过 MyBatis 提供的强大机制,使用插件是非常简单的,只需实现 Interceptor 接口,并指定了想要拦截的方法签名即可

7、environments 环境和environment 环境变量

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者共享相同 Schema 的多个生产数据库, 想使用相同的 SQL 映射尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一默认的环境 ID(比如:default=”development”)。每个 environment 元素定义的环境 ID(比如:id=”development”)。事务管理器的配置(比如:type=”JDBC”)。数据源的配置(比如:type=”POOLED”)。

8、transactionManager 事务管理器

在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”):JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为使用 Spring + MyBatis,则没有必要配置事务管理器, 因为 Spring 模块会使用自带的管理器来覆盖前面的配置

9、dataSource 数据源

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”):1、UNPOOLED– 这个数据源的实现只是每次被请求时打开和关闭连接。虽然一点慢,它对在及时可用连接方面没有性能要求的简单应用程序是一个很好的选择。 不同的数据库在这方面表现也是不一样的,所以对某些数据库来说使用连接池并不重要,这个配置也是理想的。UNPOOLED 类型的数据源仅仅需要配置以下 5 种属性:driver – 这是 JDBC 驱动的 Java 类的完全限定名(并不是JDBC驱动中可能包含的数据源类)。url – 这是数据库的 JDBC URL 地址。username – 登录数据库的用户名。password – 登录数据库的密码。defaultTransactionIsolationLevel – 默认的连接事务隔离级别。作为可选项,你也可以传递属性给数据库驱动。要这样做,属性的前缀为“driver.”,例如:driver.encoding=UTF8这将通过DriverManager.getConnection(url,driverProperties)方法传递值为 UTF8 的 encoding 属性给数据库驱动。2、POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这是一种使得并发 Web 应用快速响应请求的流行处理方式。除了上述提到 UNPOOLED 下的属性外,会有更多属性用来配置 POOLED 的数据源:poolMaximumActiveConnections – 在任意时间可以存在的活动(也就是正在使用)连接数量,默认值:10poolMaximumIdleConnections – 任意时间可能存在的空闲连接数。poolMaximumCheckoutTime – 在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000 毫秒(即 20 秒)poolTimeToWait – 这是一个底层设置,如果获取连接花费的相当长的时间,它会给连接池打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直安静的失败),默认值:20000 毫秒(即 20 秒)。poolPingQuery – 发送到数据库的侦测查询,用来检验连接是否处在正常工作秩序中并准备接受请求。默认是“NO PING QUERY SET”,这会导致多数数据库驱动失败时带有一个恰当的错误消息。poolPingEnabled – 是否启用侦测查询。若开启,也必须使用一个可执行的 SQL 语句设置 poolPingQuery 属性(最好是一个非常快的 SQL),默认值:false。poolPingConnectionsNotUsedFor – 配置 poolPingQuery 的使用频度。这可以被设置成匹配具体的数据库连接超时时间,来避免不必要的侦测,默认值:0(即所有连接每一时刻都被侦测 — 当然仅当 poolPingEnabled 为 true 时适用)。3、JNDI– 这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。这种数据源配置只需要两个属性:initial_context – 这个属性用来在 InitialContext 中寻找上下文(即,initialContext.lookup(initial_context))。这是个可选属性,如果忽略,那么 data_source 属性将会直接从 InitialContext 中寻找。data_source – 这是引用数据源实例位置的上下文的路径。提供了 initial_context 配置时会在其返回的上下文中进行查找,没有提供时则直接在 InitialContext 中查找

10、databaseIdProvider 数据库厂商标识

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。 为支持多厂商特性只要像下面这样在 mybatis-config.xml 文件中加入 databaseIdProvider

11、mappers 映射器

<!--映射文件,就是需要MyBatis管理的接口实现类对应的映射文件  -->    <mappers>        <!--基于xml的实现  -->       <mapper resource="org/qf/dao/StudentDaoMapper.xml"/>       <!-- 基于注解的实现 -->      <!--  <mapper class=""/> -->      <!--标记指定的包  -->      <!-- <package name="org.qf.dao"/> -->    </mappers>
原创粉丝点击