这一节我们继续上一节的知识,笔者将向大家介绍TransactionManager、Propertis、setting和Mappers的参数
1. TransactionManager参数
MyBatis提供了两个TransactionManager的types:JDBC和MANAGED。
1) TransactionManager的types为JDBC时,那么应用程序就负责管理连接的生命周期,如commit(提交)、rollback(回滚)等。当你设置TransdactionManagetr的属性为JDBC时,底层的场景就是MyBatis去使用JdbcTransactionFactory的类,去创建TransactionManager。例如,一个应用程序使用Apache的Tomcat,那么需要它自己去管理事务。
2) 当应用程序服务负责管理连接的生命周期时,我们就会使用MANAGED的事务管理。当你设置TransactionManager的属性为MANAGED,MyBatis的底层会去调用ManagedTransactionFactory的类去创建TransactionManager。例如,一个JavaEE的应用程序依赖于申请的服务,像JBoss、WebLogic或GlasFish,可以使用EJB来进行事务管理。在事务管理的环境中,你可以使用MANAGED的事务来管理。
2. Properties的参数
properties的配置参数可以使用外部的配置信息,然后加载进来。我的意思就是说,我们在前定义了个application.properties的文件,里面定义的形式就是key-value的格式。这样的我们在mybatis-config.xml的文件的Properties的值,可以引用 application.properties的值。
1) 在application.properties的文件中配置数据库连接的参数。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatisdemo
jdbc.username=root
jdbc.password=admin
2) 在mybatis-config.xml的文件中,使用占位符来配置。
<properties resource="application.properties">
<property name="jdbc.username" value="db_user"/>
<property name="jdbc.password" value="verysecurepwd"/>
</properties>
<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>
就如上面的所看到的,我们又重新给username和password设值了,如果你不需要重新设值,那么就直接写:<properties resource="application.properties"/>就可以了。
3. Settings的参数
如果我们配置了下面的信息,那么Mybatis的相关属性就不在是默认的,而是会被覆盖,使用我们自己配置的信息。
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25000"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode
,toString"/>
</settings>
4. Mappers的参数
Mapper XML的文件包含了映射的SQL的声明,这些SQL的语言将会被执行,通过staterment的id.如果是本地的xml文件,那么我们需要写出绝对路径,同时,我们需要在mybatis-config.xml的文件配置。
<mappers>
<mapper resource="com/owen/mybatis/mappers/StudentMapper.xml"/>
<mapper url="file:///D:/mybatisdemo/app/mappers/TutorMapper.xml"/>
<mapper class="com.owen.mybatis.mappers.TutorMapper"/>
<package name="com.owen.mybatis.mappers"/>
</mappers>
上面的代码中,第一个不同的<mapper>的标签,我们都使用不同的定义,有resource、url、class、package的。
1) resource的属性连接着每一个映射的文件,这个文件是放在类路径下的。
2) url的路径是连接着映射文件通过我们系统的绝对路径或web的URL。
3) class的属性就是关联着映射类的接口。
4) package的参数,可以是关联到类的包,映射的可以被找到。