environments
详解:
该标签用于配置数据库连接的基础设置,例如事务管理器,连接池等。
mybatis可配置多个数据库连接,注意每一个数据库连接对应一个SqlSessionFactory,所以若想同时连接两个数据库,则需要建立两个mybatis的核心配置文件,并对应到相应的数据库。
下面是mybatis中一个environments配置示例:
<environments default="mysql_environment">
<environment id="mysql_environment">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="zhangdd" />
<property name="password" value="zd1991.." />
</dataSource>
</environment>
</environments>
其中一个environment对应一个数据库连接配置,可以利用environments的default属性来制定当前所使用的数据库连接配置,例如在开发时,连接测试数据库环境,在应用上线时连接生成环境,就可以实现进行配置,并利用default属性进行切换,使用起立很方便。
transactionManager
该标签用于设置事务管理器。mybatis提供了两种实物管理器:
JdbcTransaction(JDBC),ManagedTransaction(MANAGED),其中JdbcTransaction直接沿用了java-JDBC的事务管理机制,依赖于数据库连接来管理事务。
dataSource
该标签用来配置数据源
一个简单的例子如下:
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="zhangdd" />
<property name="password" value="zd1991.." />
</dataSource>
mybatis提供了三种数据源的实现:UNPOOLED、POOLED、JNDI
除了上述三种数据源也可以引用第三方的数据源,例如DBCP或C3P0,只需要将dateSource标签的type属性制定到特定的DataSource类就可以
例如:
<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>
mappers
该标签用来引用Bean的sql映射文件
应用sql映射的方式有四种,分别是:
1)引入类路径下的xml文件
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
2)使用文件系统的绝对路径
<mappers>
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper url="file:///var/mappers/BlogMapper.xml"/>
<mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
3)使用接口是引用(对sql的映射也可以利用接口+注解的形式来完成)
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
4)使用包名来执行某些包下的所有映射
mappers>
<package name="org.mybatis.builder"/>
</mappers>