数据源(dataSource)

dataSource元素使用标准的JDBC数据源接口来配置JDBC连接对象的资源。

·许多MyBatis的应用程序会按示例中的例子来配置数据源。虽然是可选的,但为了使用延迟加载,数据源是必须配置的。

有三种内建的数据源类型(也就是type=”[UNPOOLED | POOLED | JNDI]”):

UNPOOLED

这个数据源的实现只是每次被请求时打开和关闭连接。虽然有点慢,但对于在数据库连接可用性方面没有太高要求的简单应用程序来说,是一个很好的选择。不同的数据库在性能方面的表现也是不一样的,对于某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。UNPOOLED类型的数据源仅仅需要配置以下5种属性:

·driver:这是JDBC驱动的java类的完全限定名(并不是JDBC驱动中可能包含的数据源类)

·url:这是数据库的JDBC URL地址

·username:登录数据库的用户名

·password:登录数据库的密码

·defaultTransactionIsolationLevel:默认的连接事务隔离级别

作为可选项,也可以传递属性给数据库驱动。要这样做,属性的前缀为”driver.”,例如:

·driver.encoding=UTF8

这将通过DriverManager.getConnection(url,driverProperties)方法传递值为UTF8的encoding属性给数据库驱动。

POOLED

这种数据源的实现利用“池”的概念将JDBC连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。这是一种使得并发web应用快速响应请求的流行处理方式。

除了上述提到的UNPOOLED下的属性外,还有更多属性用来配置POOLED的数据源:

·poolMaximumActiveConnections:在任意时间可以存在的活动(也就是正在使用)连接数量,默认值:10

·poolMaximumIdleConnections:任意时间可能存在的空闲连接数

·poolMaximumCheckoutTime:在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000毫秒(既20秒)

·poolTimeToWait:这是一个底层设置,如果获取连接花费了相当长的时间,连接池会打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直安静的失败),默认值:20000毫秒(既20秒)

·poolMaximumLocalBadConnectionTolerance:这是一个关于坏连接容忍度的底层设置,作用于每一个尝试从缓存池获取连接的线程。如果这个线程获取到的连接是一个坏的连接,那么这个数据源允许这个线程尝试重新获取一个新的连接,但是这个重新尝试的次数不应该超过poolMaximumIdleConnections与poolMaximumLocalBadConnectionTolerance之和。默认值:3(新增于3.4.5)

·poolPingQuery:发送到数据库的侦测查询,用来检验连接是否正常工作并准备接受请求。默认是”NO PING QUERY SET”,这会导致多数数据库驱动失败时带有一个恰当的错误信息。

·poolPingEnabled:是否启用侦测查询。若开启,需要设置poolPingQuery属性为一个可执行的SQL语句(最好是一个速度非常快的SQL),默认值:false。

·poolPingConnectionsNotUsedFor:配置poolPingQuery的频率。可以被设置为和数据库连接超时时间一样,来避免不必要的侦测,默认值:0(既所有连接每一时刻都被侦测 – 当然仅当poolPingEnabled为true时适用)。

JNDI

这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。这种数据源配置只需要两个属性:

·initial_context:这个属性用来在InitialContext中寻找上下文(既,initialContext.lookup(initial_context))。这是个可选属性,如果忽略,那么data_source属性将会直接从InitialContext中寻找。

·data_source:这是引用数据源实例位置的上下文的路径。提供了initial_context配置时会在其返回的上下文中进行查找,没有提供时则直接在InitialContext中查找。

和其他数据源配置类似,可以通过添加前缀 “env.”直接把属性传递给初始上下文。比如:

·env.encoding=UTF8

这会在初始上下文(InitialContext)实例化时往它的构造方法传递值为UTF8的encoding属性。

可以通过实现接口org.apache.ibatis.datasource.DataSourceFactory来使用第三方数据源:

public interface DataSourceFactory {

void setProperties(Properties props);

DataSource getDataSource();

}

org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory可被用作父类来构建新的数据源适配器,比如下面这段插入C3P0数据源所必须的代码:

import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0DataSourceFactory extends UnpooledDataSourceFactory {

public C3P0DataSourceFactory() {

this.dataSource = new ComboPooledDataSource();

}

}

为了令其工作,记得为每个希望MyBatis调用的setter方法在配置文件中增加对应的属性。下面是一个可以连接至PostgreSQL数据库的例子:

<dataSource type="org.myproject.C3P0DataSourceFactory">

<property name="driver" value="org.postgresql.Driver"/>

<property name="url" value="jdbc:postgresql:mydb"/>

<property name="username" value="postgres"/>

<property name="password" value="root"/>

</dataSource>

转载于:https://www.cnblogs.com/arrows/p/10340703.html

MyBatis配置项--配置环境(environments)--数据源(dataSource)的更多相关文章

  1. SpringMVC+Mybatis 如何配置多个数据源并切换?

    最近公司一个项目需要连接两个数据库(A和B)操作,有的模块查询A库,有的模块查询B库,因此需要改造下,项目后台用的是SpringMVC+Mybatis+MySQL架构,折腾了两天后终于搞定了,在这里记 ...

  2. 配置多个数据源datasource

    https://www.jianshu.com/p/34730e595a8c @Primary.@Qualifire.@Autowired.@Resource https://blog.csdn.ne ...

  3. 1.2(Mybatis学习笔记)Mybatis核心配置

    一.Mybatis核心对象 1.1SqlSeesionFactory SqlSessionFactory主要作用是创建时SqlSession. SqlSessionFactory可通过SqlSessi ...

  4. 04 Mybatis 框架的环境搭建及入门案例

    1.搭建 Mybatis 开发环境 mybatis的环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao的接口 第三步:创建Mybatis的主配置文件 SqlMapConifg. ...

  5. mybatis 简单配置

    一.com/book/map包下有两个配置文件: 1.MyBatisConfig.xml <?xml version="1.0" encoding="UTF-8&q ...

  6. mybatis源码解读(三)——数据源的配置

    在mybatis-configuration.xml 文件中,我们进行了如下的配置: <!-- 可以配置多个运行环境,但是每个 SqlSessionFactory 实例只能选择一个运行环境常用: ...

  7. MyBatis探究-----配置数据源的几种方式

    1.在核心配置文件mybatis-config.xml中配置数据库连接信息 mysql的j驱动jar包是mysql-connector-java-6.0.6.jar mysql版本5.7 <?x ...

  8. SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)

    1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...

  9. MyBatis 强大之处 多环境 多数据源 ResultMap 的设计思想是 缓存算法 跨数据库 spring boot rest api mybaits limit 传参

    总结: 1.mybaits配置工2方面: i行为配置,如数据源的实现是否利用池pool的概念(POOLED – This implementation of DataSource pools JDBC ...

随机推荐

  1. 简单记录下RestTemplate 中postForObject调用例子

    学无止境! 今天无意中做了下RestTemplate调用demo,简单的尝试了下一个项目调用另一个项目接口示例 在A项目中创建可访问controller 然后在B项目中进行调用 调用成功

  2. 1023 Have Fun with Numbers (20 分)

    1023 Have Fun with Numbers (20 分)   Notice that the number 123456789 is a 9-digit number consisting ...

  3. mysql物理级别热备脚本

    #!/bin/bash mysql_backup_dir=/data/databaseup/ mysql_username="root" mysql_password=" ...

  4. Spring Boot入门系列(十)如何使用拦截器,一学就会!

    前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhon ...

  5. Java线程通讯方法之wait()、nofity() 详解

    Java线程通讯方法之wait().nofity() 详解 本文将探讨以下问题: synchronized 代码块使用 notify()与notifyAll()的区别 Java wait(),noti ...

  6. flask-类视图

    flask-类视图 标准类视图 from flask import Flask, render_template, views, jsonify app = Flask(__name__) class ...

  7. Linux命文件与目录属性

    一.linux系统中文件标志 d ===> 目录 - ===> 文件 l ===> 连接文件 b ===> 可供存储设备文件 c ===> 串形端口设备文件(鼠标,键盘) ...

  8. MySQL5.7使用Notifier启动、停止服务时出现的问题

    1.选择右击右下角 MySQL Notifier ,选择 Actions -> Manage Monitored Items 2.选择当前的服务 MySQL57  并进行删除 3.然后点击  a ...

  9. NonRegisteringDriver造成的内存频繁FullGc

    某天上服务器看了下gc情况,发现状况不对,启动了才2天的服务器发生了360次fullgc,这个频率肯定高了 说明 S0C.S1C.S0U.S1U:Survivor 0/1区容量(Capacity)和使 ...

  10. 三、Pycharm2019.3.3的安装

    一:什么是Pycahrm PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动 ...