2、XML配置文件

来源:互联网 发布:阿里云服务器续费优惠 编辑:程序博客网 时间:2024/06/05 03:38
XML文件结构如:

configuration 配置
  •  properties 属性 
  •  settings 设置 
  •  typeAliases 类型命名 
  •  typeHandlers 类型处理器 
  •  objectFactory 对象工厂 
  •  plugins 插件 
  •  environments 环境 
    • environment 环境变量
      • transactionManager 事务管理器 
      • dataSource 数据源 
  • databaseIdProvider 数据库厂商标识 
  • mappers 映射器 


(1)properties 属性
<!--要写在要用的前面-->
<properties resource="jdbc.properties">
<property name="username" value="root" />
<property name="password" value="mysql"/>
</properties>
<environments default="development">
<environment id="development">
<!--决定事务范围和控制方式的事务管理器(TransactionManager-->
<transactionManager type="JDBC" />
<!--数据库连接实例的数据源(DataSource-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换。 driver 和 url 属性将会由 config.properties 文件中对应的值来替换。这样就为配置提供了诸多灵活选择。

如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:

  • 在 properties 元素体内指定的属性首先被读取。
  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
  • 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。


(2)settings 设置
<settings>
<!--配置缓存的全局开关-->
<setting name="cacheEnabled" value="true"/>
<!--延迟加载的全局开关-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--是否允许单一语句返回多结果集-->
<setting name="multipleResultSetsEnabled" value="true"/>
<!--使用列标签代替列名-->
<setting name="useColumnLabel" value="true"/>
<!--允许JDBC支持自动生成主键-->
<setting name="useGeneratedKeys" value="false"/>
<!--指定Mybatis应如何自动映射列到字段或属性-->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!--默认的执行器,SIMPLE就是普通的执行器,REUSE执行器会重用预处理语句,BATCH执行器将重用语句并执行批量更新-->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!--设置超时时间,驱动等待数据库响应的秒数-->
<setting name="defaultStatementTimeout" value="25"/>
<!--允许在嵌套语句中使用分页-->
<setting name="safeRowBoundsEnabled" value="false"/>
<!--是否开启驼峰命名规则映射,即数据库A_COLUMNJAVA属性aColumn-->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!--利用本地缓存机制防止循环引用和加速重复嵌套查询-->
<setting name="localCacheScope" value="SESSION"/>
<!--当没有为参数提供特定的JDBC类型时,为空值指定JDBC类型-->
<setting name="jdbcTypeForNull" value="OTHER"/>
<!--指定哪一个对象的方法触发一次延迟加载-->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

(3)TypeAliases 类型命名
<!--类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余.-->
<typeAliases>
<typeAlias alias="User" type="com.pandawork.springmvc.common.entity.User"/>
</typeAliases>
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
<typeAliases>
<package name="com.pandawork.springmvc.common.entity"/>
</typeAliases>

(4)environments 环境

如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推,记起来很简单:每个数据库对应一个 SqlSessionFactory 实例             


事务管理器(transactionManager)

在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”):

  • JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。
  • MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为

数据源(dataSource)

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

  • 许多 MyBatis 的应用程序将会按示例中的例子来配置数据源。然而它并不是必须的。要知道为了方便使用延迟加载,数据源才是必须的。

有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”):

UNPOOLED– 这个数据源的实现只是每次被请求时打开和关闭连接。

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。

JNDI– 这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。


0 0
原创粉丝点击