mybatis学习总结-核心配置文件mybatis-config.xml

http://ju.outofmemory.cn/entry/94634

在 mybatis初体验 中,在mybatis-config.xml中有这样的配置:

    <!-- 对事务的管理和连接池的配置 -->  
    <environments default="development">  
        <environment id="development">  
            <transactionManager type="JDBC" />  
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.driverClassName}" />  
                <property name="url" value="${jdbc.url}" />  
                <property name="username" value="${jdbc.username}" />  
                <property name="password" value="${jdbc.password}" />   
            </dataSource>  
        </environment>  
    </environments>

从这可以看出,environments主要用于配置数据库相关,而且可以在里面配置多个environment。

因为有这些场景:

1)为了开发设置不同的数据库配置

2)测试和生产环境数据库不同

3)有多个数据库却共享相同的模式,即对不同的数据库使用相同的SQL映射

我们可以配置几个数据库配置,我们可以这样:

 <!-- 对事务的管理和连接池的配置 -->  
    <environments default="oracle_jdbc">  
        <environment id="oracle_jdbc">  
            <transactionManager type="JDBC" />  
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.oracle.driverClassName}" />  
                <property name="url" value="${jdbc.oracle.url}" />  
                <property name="username" value="${jdbc.oracle.username}" />  
                <property name="password" value="${jdbc.oracle.password}" />   
            </dataSource>  
        </environment>  
        
        <environment id="mysql_jdbc">  
            <transactionManager type="JDBC" />  
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.mysql.driverClassName}" />  
                <property name="url" value="${jdbc.mysql.url}" />  
                <property name="username" value="${jdbc.mysql.username}" />  
                <property name="password" value="${jdbc.mysql.password}" />   
            </dataSource>  
        </environment> 
    </environments>

用default指定默认的数据库链接:(这里默认oracle)

 <environments default="oracle_jdbc">

我们每个数据库,对应一个SqlSessionFactory,可以明确的获取哪一个数据库的SqlSessionFactory。

根据数据库环境,获取SqlSessionFactory:

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment);
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment,properties);

我们的每个数据库信息都定义在environment中,我们看下这下面的配置:

1.transactionManager

示例配置:

<transactionManager type="JDBC" />

type取值范围:

JDBC:简单的使用JDBC的提交和回滚设置,一览与从数据员得到的链接来管理事务范围

MANAGED:这个配置几乎什么都没做,它从来不提交或回滚一个链接,而它让容器来管理事务的整个生命周期(比如spring、jee应用服务器的上下文)

在默认情况下,MANAGED会关闭连接,如果有时候不希望这样时,可以从连接中停止它,将claseConnection属性设置为false:

<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

2.dataSource

用来配置基本的JDBC数据源连接信息

示例配置:

<dataSource type="POOLED">  
   <property name="driver" value="${jdbc.mysql.driverClassName}" />  
   <property name="url" value="${jdbc.mysql.url}" />  
   <property name="username" value="${jdbc.mysql.username}" />  
   <property name="password" value="${jdbc.mysql.password}" />   
</dataSource>

type取值范围:

UNPOOLED:这个数据源的实现是每次被请求时打开和关闭连接。速度会有一些慢,适用于简单的应用程序。

这种类型的数据源只需要配置下面的6种属性(最后一项为可选):

driver JDBC驱动名
url JDBC URL地址
username 数据库用户名
password 数据库密码
defaultTransactionIsolationLevel 默认的链接事务隔离级别
driver.encoding utf-8(可选项)

POOLED:这是JDBC链接对象的数据源连接池的实现,用来避免创建新的链接实例时必要的连接和认证时间。适用于当前Web应用程序用来快速响应请求

这种类型的数据源除了需要配置UNPOOLED中的基础配置外,还可以配置下面的内容:

poolMaximumActiveConnections 在任意时间正在使用链接的数量
poolMaximumIdleConnections 任意时间存在的空闲连接数
poolMaximumCheckoutTime 在被强制返回之前,连接池中被检查的时间,默认值为20000毫秒
poolTimeToWait 给连接池一个打印日志状态机会的低层次设置,还有重新尝试获取连接,这些情况往往会需要很长时间。为了避免连接池没有配置时静默失败。默认值20000毫秒
poolPingQuery 发送到数据的侦测查询,用来验证连接是否正常工作,并且准备接受请求。默认为“NO PING QUERY SET”,这会引起许多数据库驱动连接由一个错误信息而导致失败
poolPingEnabled 这是开启或禁用侦测查询,如果开启,必须用一个合法的SQL语句,设置poolPingQuery属性,默认值为false
poolPingConnectionsNotUsedFor 用来配置poolPingQuery多长时间被调用一次。可以被设置匹配标准的数据库链接超时时间,来避免不必要的侦测。默认值0(也就是所有链接每一时刻都被侦测到,但仅仅当poolPingEnabled为true时适用)。

JNDI:这个数据源是为了使用如Spring或应用服务器这类的容器,容器可以集中或在外部配置数据源,然后设置JNDI上下文的引用。

这个数据源只需要配置两个属性:

initial_context 用来从初始上下文中寻找环境(也就是initialContext.lookup(initial——context)),这是个可选属性,如果被忽略,那么data_source属性将直接以initialContext为背景再次寻找
data_source 这是引用数据源实例位置的上下文的路径,它会以initial_context查询返回的环境为背景来查找,如果initial_context没有返回结果时,直接以初始上下文为环境来查找。

和其他数据源配置类似,他可以通过名“env.”的前缀来直接向初始上下文发送属性,比如:

env.encoding=UTF8

原文地址:https://www.cnblogs.com/manhuidhu/p/8358736.html

时间: 2024-10-08 15:59:20

mybatis学习总结-核心配置文件mybatis-config.xml的相关文章

MyBatis学习总结(三)——优化MyBatis配置文件中的配置(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(三)--优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org

【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

[转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//E

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

Mybatis(1.核心配置文件.Properties.Settings.typeAliases...) 2017年04月23日 22:52:36 阅读数:1527 此章主要介绍sqlMapConfiguragion.xml的核心配置属性. mybatis.mappers.Environments.ObjectFactory.typeHandlers.Properties.Settings.typeAliases.Plugins 原链接为:https://blog.csdn.net/www105

MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(二)--使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.本文中使用到的测试环境是上一篇博文中的测试环境. 一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMa

Mybatis学习总结(三)——SqlMapConfig.xml全局配置文件解析

经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置文件中都有哪些可以配置的东西: 配置内容 作用 <properties> 用来加载属性文件 <settings> 用来设置全局参数 <typeAliases> 用来设置类型的别名 <typeHandlers> 用来设置类型处理器 <objectFactor

2、mybatis学习——eclipse中导入mybatis的dtd约束使其配置文件有提示

1.以压缩形式打开mybatis的jar包 2.解压这两个dtd文件 我的解压后的文件路径如下 3.在eclipse中点击window,然后点击preferences 4.依次找到如图部分 5.添加全局配置文件的dtd 复制mybatis中的全局配置文件的dtd(不要双引号) 6.添加mapper配置文件的dtd 复制mapper配置文件的dtd(不要双引号) 然后操作和上面导入全局配置操作一样 7.此时便有提示 原文地址:https://www.cnblogs.com/lyh233/p/123

MyBatis学习笔记(3)—— 利用mybatis灌入假数据

由于第三方厂商未能按时提供实时数据,故需要纯手动导入一些实时数据,用于统计分析.正好最近自己学习了mybatis .因此使用mybatis 配置一个select.insert 的简单操作语句,用于灌入实时数据. 业务表 Ems_Standard_FormulaRelation[配置表,主要提供实时表的unitId,mediaId,standardId] Ems_StandardRuntime_Hour[实时表] 准备工作 数据库我用的是sqlserver 2008 r2 1.在lib 中导入所需

MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql

1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型.Map 接口和POJO 到数据库记录.相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现.需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包).mybatis-spr

MyBatis学习总结_09_使用MyBatis Generator自动创建代码

一.构建一个环境 1. 首先创建一个表: [sql] view plaincopy CREATE TABLE t_user ( USER_ID INT NOT NULL AUTO_INCREMENT, USER_NAME CHAR(30) NOT NULL, USER_PASSWORD CHAR(10) NOT NULL, USER_EMAIL CHAR(30) NOT NULL, PRIMARY KEY (USER_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf