MyBatis的XML配置文件(一)

来源:互联网 发布:阿桑奇 斯诺登 知乎 编辑:程序博客网 时间:2024/06/04 01:22

MyBatis的组成中,主要的是SqlSessionFactory的类,这个类会动态调用SqlSession和执行SQL的声明映射。SqlSessionFactory的对象创建可以基于XML的配置或Java的API

笔者将向大家介绍MyBatis的配置文件中的配置参数,像dataSource、environment、gypeAlisea、typeHandler和SQL的映射。

从这一节开始,笔者所介绍的内容包含下面的:

 

1)        使用XML配置文件

2)        使用Java API的配置

3)        MyBatis的日志加载

1. 使用 XML的配置文件

创建SqlSessionFactory常用的普遍的方法就是基于XML的配置。下面有一份mybatis-config的配置文件。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><properties resource="application.properties"><property name="username" value="db_user"/><property name="password" value="verysecurepwd"/></properties><settings><setting name="cacheEnabled" value="true"/></settings><typeAliases><typeAlias alias="Tutor" type="com.owen.mybatis.domain.Tutor"/><package name="com.owen.mybatis.domain"/></typeAliases><typeHandlers><typeHandler handler="com.owen.mybatis.typehandlers.PhoneTypeHandler"/><package name="com.owen.mybatis.typehandlers"/></typeHandlers><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><environment id="production"><transactionManager type="MANAGED"/><dataSource type="JNDI"><property name="data_source" value="java:comp/jdbc/MyBatisDemoDS"/></dataSource></environment></environments><mappers><mapper resource="com/owen/mybatis/mappers/StudentMapper.xml"/><mapper url="file:///D:/mybatisdemo/mappers/TutorMapper.xml"/><mapper class="com.owen.mybatis.mappers.TutorMapper"/></mappers></configuration>

下面我们将对这些配置的信息进行探讨。

2. Environment参数

MyBatis提供了多套数据源的环境配置,以至于将应用程序部署在多样的环境中,像DEV、TEST、QA、UAT和PRODUCTION.这样,我们可以更加容易去改变默认的环境,我们只需要改变enviroment的id的值就行了。一般,我们的默认的环境配置值是development。当我们的应用部署在生产的应用程序上时,我们不需要改变太多有配置文件,仅仅只需要改变一下默认的enviroment的id值就可以。

有时候,我们在一个同样的应用程序中,我们可能需要使用多套的数据库。例如,我们需要SHOPPINGCART的数据库来储蓄订单的详细信息和我们需要database去汇报我们的目的,通过储蓄订单的详细信息。

在你的应用程序中,需要去连接多个不同的数据库,你需要分开去配置每套数据库,和分开去创建SqlSessionFactory对象对应不同的数据库。

<environments default="shoppingcart"><environment id="shoppingcart"><transactionManager type="MANAGED"/><dataSource type="JNDI"><property name="data_source" value="java:comp/jdbc/ShoppingcartDS"/></dataSource></environment><environment id="reports"><transactionManager type="MANAGED"/><dataSource type="JNDI"><property name="data_source" value="java:comp/jdbc/ReportsDS"/></dataSource></environment></environments>

我们可以创建SqlSessionFactory给我们的环境,如下所示:

inputStream = Resources.getResourceAsStream("mybatis-config.xml");defaultSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);cartSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,"shoppingcart");reportSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,"reports");

当我们创建SqlSessionFactory没有明确定义environment的id时,SqlSessionFactory将会创建默认的环境。在上面的代码中,defaultSqlSessionFactory创建使用shoppingcart的环境配置。在每一个的环境中,我们需要去配置dataSource和transactionManager的参数。

3. DataSource的参数

dataSource的参数的配置,是数据库连接的属性需要的相应参数。

 <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>

上面的代码中,我们看到了dataSource的type是“POOLED”,这个type可以是UNPOOLED、POOLED、或JNDI.

 

1)        如果你使用的type是UNPOOLED,MyBatis将会在第一次数据库操作的时候,开启数据库和关闭数据库。这个方法可以用于一些简单的数据库,和用户量不是很多的程序中。不过笔者不提倡使用这个方法。

2)        如果你使用的type是POOLED,MyBatis将会创建一个数据库的连接池,和数据库在操作时,只会连接数据库一次。一旦这个连接成功后,MyBatis将会返回,连接到连接池中,也就是说,以后所使用的数据是从连接池来获取的。这个方法适合使用于开发和测试的环境中。

3)        如果你使用的type是JNDI,MyBatis将会从JNDI获取连接,数据资源一般会配置在应用程序的服务上。这个方法一般会用于生产的环境中。






0 0