当前位置:首页 > Java技术 > mybatis-配置文件mybatis-config.xml

mybatis-配置文件mybatis-config.xml

2022年11月08日 23:21:31Java技术22

在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 任意时间存在的空闲连接数,经验值建议设置在与poolMaximumActiveConnections相同即可
poolMaximumCheckoutTime 获取链接时如果没有idleConnection同时activeConnection达到最大值,则从activeConnections列表第一个链接开始,检查是否超过该设置的时间,如果超过,则被强制失效,返回链接。默认值为20000毫秒,建议设置在预期最大的SQL执行时间。
poolTimeToWait 给连接池一个打印日志状态机会的低层次设置,还有重新尝试获取连接,这些情况往往会需要很长时间。为了避免连接池没有配置时静默失败。默认值20000毫秒,建议默认设置。
poolPingQuery 发送到数据的侦测查询,用来验证连接是否正常工作,并且准备接受请求。默认为“NO PING QUERY SET”,这会引起许多数据库驱动连接由一个错误信息而导致失败,建议使用select 1,开销小
poolPingEnabled 这是开启或禁用侦测查询,如果开启,必须用一个合法的SQL语句,设置poolPingQuery属性,默认值为false,建议启用,防止服务器端异常关闭,导致客户端错误。
poolPingConnectionsNotUsedFor 用来配置poolPingQuery多长时间被调用一次。可以被设置匹配标准的数据库链接超时时间,来避免不必要的侦测。默认值0(也就是所有链接每一时刻都被侦测到,但仅仅当poolPingEnabled为true时适用)。建议小于服务器端超时时间,MySQL默认超时是8小时。

 

 

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

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

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

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

env.encoding=UTF8

 

 

原文转自《mybatis学习总结-核心配置文件mybatis-config.xml(二)》,稍有修改和注解。

作者:Weagle
来源链接:https://www.cnblogs.com/Weagle/p/5264770.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68549.html

标签: MyBatis
分享给朋友:

“mybatis-配置文件mybatis-config.xml” 的相关文章

详解SpringBoot整合Mybatis框架

详解SpringBoot整合Mybatis框架

文章目录 前言 一、创建SpringBoot项目 二、配置Mybatis 1. 在pom.xml文件中添加jar包依赖 2. SpringBoot整合Myb...

springboot+mybatis连接Postgresql数据库实例

springboot+mybatis连接Postgresql数据库实例

接上篇配好springboot+mybatis+日志。mysql的是比较基础的这里就不写了 这里写一下关于配置postgresql数据库需要改哪些 首先介绍场景需求。需要连接oushu database  有兴趣的可以看一下官网示例:http://ww...

easy-table-vue+VueJs、SpringBoot+Mybatis实现MVVM模型前后台数据交互

easy-table-vue+VueJs、SpringBoot+Mybatis实现MVVM模型前后台数据交互

该项目分为前端展示部分和后台服务部分。 前端部分   使用的技术是:NodeJs、Webpack、VueJs   使用的组件库是:IVIEW、easy-table-vue   使用的开发工具是:WebStorm  链接:https://pan.b...

Springboot设置mybatis事务

Springboot设置mybatis事务是非常简单的,只需两个注解即可:   启用全局事务:在springboot启动类,加上@EnableTransactionManagement(proxyTargetClass = true)注解,因为我启动...

报org.mybatis.spring.MyBatisSystemException: nested exception is `***.ReflectionException解决方法!

错误描述: 1.数据库中表(se_seat)设计 字段 数据类型 seSeatId varchar seSeatName...

消息:Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested

HTTP Status 500 – Internal Server Error Type 异常报告 消息 Request processing failed; nested exception is org.mybatis.spring.MyBatisS...

mybatis中的一个异常:org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to

mybatis中的一个异常:org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to

1、错误描述 16-Nov-2017 19:09:58.129 严重 [http-nio-8080-exec-16] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for...

Mybatis常用操作 专题

Mybatis常用操作 专题

parameterType:即将传入的语句参数的完全限定类名和别名。这个属性是可选项的,因为MyBatis可以推断出传入语句的具体参数,因此不建议配置该属性flushCache:默认值为true,任何时候只要语句被调用,都会清空一级缓存和二级缓存useGenerated...

Mybatis @SelectProvider()注解报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apa

Mybatis @SelectProvider()注解报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apa

前言 使用Mybatis @SelectProvider()注解报错 异常 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis...

mybatis 因为没有设置resultMap id 引起的多结果集异常

mybatis 因为没有设置resultMap id 引起的多结果集异常

mybatis *Mapper.xml 中resultMap的id用来提高整体效能,是比较对象实例时的标识属性,特别是嵌入缓存和结果映射。如果resultMap中不含id项,有可能出现org.mybatis.spring.MyBatisSystemExc...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。