MyBatis的XML配置文件(一)

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 configuration
PUBLIC "-//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(inputStre
am,"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获取连接,数据资源一般会配置在应用程序的服务上。这个方法一般会用于生产的环境中。






你可能感兴趣的:(java,spring,mybatis,web开发)