专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
芋道源码  ·  2024年,劝搞Java的不要轻易跳槽! ·  昨天  
芋道源码  ·  玩转Spring:强大的 SpEL 表达式 ·  4 天前  
芋道源码  ·  深入理解Nginx工作原理及优化技巧 ·  6 天前  
51好读  ›  专栏  ›  ImportNew

MyBatis(2):config.xml文件

ImportNew  · 公众号  · Java  · 2016-12-21 20:02

正文

(点击上方公众号,可快速关注)


来源:五月的仓颉

链接:www.cnblogs.com/xrq730/p/5256221.html


前言


前一篇文章,讲了MyBatis入门,讲到了MyBatis有两个基本的配置文件,一个用来配置环境信息,一个用来写SQL语句。前者我把它命名为config.xml,config.xml的内容是:


/span>

"http://mybatis.org/dtd/mybatis-3-config.dtd">

 

   

       

   

 

   

       

           

           

               

               

               

               

           

       

   

 

   

       

   


这是一个最基本的配置写法,一般使用MyBatis都可以在这个配置文件的基础上进行修改加以扩展,本文就学习一下config.xml文件里面的一些内容。


typeAliases


这个标签倒不关键,但是有这个标签之后整体使用MyBatis就会很方便。typeAliases是为Java类型命名一个短的名字,它只和XML配置有关,用来减少类完全限定名的多于部分,例如:


   

   

   

   

   

   


有了这个配置,”Blog”可以任意用来代替”domain.blog.Blog”所使用的地方。


environments


MyBatis可以配置多种环境,这会帮助你将SQL映射应用于多种数据库之中。例如,你也许为开发要设置不同的配置,测试和生产环境。或者你可能有多重生产级数据库却共享相同的模式,所以你会想到对不同数据库使用相同的SQL映射。这种用法是最多的。


有一个很重要的问题是:你可以配置多种环境,但你只能为每个SqlSessionFactory实例选择一个。


所以,如果你想连接两个数据库,那么就需要创建两个SqlSessionFactory实例,每个数据库对应一个。而如果是三个数据库,你就需要三个实例,以此类推。我们把前面的environments拿出来看:


   

       

       

           

           

           

           

       

   


而对应的Java代码是:


reader = Resources.getResourceAsReader("config.xml");

ssf = new SqlSessionFactoryBuilder().build(reader);


SqlSessionFactoryBuilder的build方法实际上还有几个别的重载方法,其中一个重要的是:


public SqlSessionFactory build(Reader reader, String environment) {

    return build(reader, environment, null);

}


原则是:如果传入environment,指定的envrionment被绑定到SqlSessionFactory;如果不传入environment,default指定的environment被绑定到SqlSessionFactory。


接着来看一下环境元素:


1、transactionManager


在MyBatis中有两种事物管理器类型,一种是JDBC,一种是MANAGED。


  • JDBC—-这个配置直接简单使用了JDBC的提交和回滚设置,它依赖于数据源得到的连接来管理事物范围


  • MANAGED—-这个配置几乎不做什么。它从来不提交或回滚一个连接,而它会让容器来管理事物的整个生命周期(比如Spring或J2EE应用服务器的上下文),默认情况下它会关闭连接,然而一些容器并不希望这样,因此如果你需要从连接中停止它,将closeConnection属性设置为false,例如:


   


2、dataSource


dataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源。许多MyBatis的应用程序将会按照上面的示例来配置数据源,然而它并不是必须的,要知道为了方便使用使用延迟加载,数据源才是必须的。有三种内建的数据源类型(也就是type=”XXX”):


(1)UNPOOLED


这个数据源的实现是每次被请求时打开和关闭连接。它有一点慢,这是对简单应用程序的一个很好的选择,因为它不需要及时的可用连接,不同的数据库对这个的表现也是不一样的,所以对某些数据库来说配置数据源并不重要,这个配置也是闲置的。UNPOOLED类型的数据源仅仅用来配置以下六种属性:


  • driver—-这是JDBC驱动的Java类的完全限定名


  • url—-这是数据库的JDBC URL地址


  • username—-登陆数据库的用户名


  • password—-登录数据库的密码


  • defaultTransactionIsolationLevel—-默认的连接事物隔离级别


  • driver.encoding—-传递数据库驱动的属性,前缀以”driver.”开头即可,”driver.encoding”表示的就是传递encoding属性


(2)POOLED


这是JDBC连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的连接和认证时间。这是一种当前Web应用程序用来快速响应请求的很流行的方法。除了上述(UNPOOLED)的属性之外,还有些别的属性可以用来配置POOLED数据源:


  • poolMaximumActiveConnections—-在任意时间存在的活动(也就是正在使用)连接的数量,默认值为10


  • poolMaximumIdleConnections—-任意时间存在的空闲连接数


  • poolMaximumCheckoutTime—-在被强制返回之前,池中连接被检查的时间,默认值为2000毫秒也就是20秒


  • poolTimeToWait、poolPingQuery、poolPingEnabled、poolPingConnectionsNotUsedFor—-这些都是一些侦测数据库连接的属性


(3)JNDI


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


  • initial_context—-这个属性用来从初始上下文寻找环境,这个是可选属性,如果被忽略,那么data_source属性将会直接以initialContext为背景再次寻找


  • data_source—-这是引用数据源实例位置的上下文路径,它会以由initial_context查询返回的环境为背景来查找,如果initial_context没有返回结果时,直接以初始上下文为环境来查找


和其它数据源配置相似,它也可以通过名为”env.”的前缀直接向初始上下文发送属性。


mappers


既然MyBatis的行为已经由上述元素配置完了,那么下面就要定义SQL映射语句了,但是首先我们要告诉MyBatis到哪里去寻找这些语句。Java在这方面没有提供一个很好的方法,所以最佳方式是告诉MyBatis去哪里找映射文件,可以通过使用相对路径的资源引用,或者字符表示,或者url引用的完全限定名,例如:


// 使用相对于类路径的资源

   

   

   

// 使用完全限定路径

   

   

   


这些语句简单告诉了MyBatis去哪里找映射文件,其余的细节就是在每个SQL映射文件中了,将在下面的文章中探讨。


settings


前面几个都是config.xml里面出现的,下面多讲一个属性,这个属性可以不在config.xml中出现,但是比较重要,写在这里为了以后可以看。


这个属性是settings,是非常重要的调整,它们会改变MyBatis在运行时的行为方式。这面这个表格描述了设置信息,它们的含义和默认值:





一个完整的设置信息元素的示例配置如下:


   

   

   

   

   

   

   

   


config.xml主要的配置信息差不多就是上面这一些,前三个比较重要,settings属于高级设置了,需要比较有经验的开发来依据项目情况做调整。


后面的一篇文章将探讨SQL语句的映射,这也是MyBatis的核心。


本系列:



觉得本文对你有帮助?请分享给更多人

关注「ImportNew」,看技术干货