EchoDemo's Blogs

MyBatis中的XML配置

1、properties

这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。首先在同级目录下新建一个db.properties文件。

<!-- db.properties文件 -->
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
username=root
password=root

<!-- properties配置 -->
<properties resource="db.properties">
    <property name="username" value="root"/>
      <property name="password" value="root"/>    
</properties>

<!-- 然后其中的属性就可以在整个配置文件中被用来替换需要动态配置的属性值,如下所示: -->
<dataSource type="POOLED">
  <property name="driver" value="${driver}"/>
  <property name="url" value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
</dataSource>

<!-- 
    1、在properties元素体内指定的属性首先被读取。
    2、然后根据properties元素中的resource属性读取类路径下属性文件或根据url属性指定的路径读取属性文件,并覆盖已读取的同名属性。
    3、最后读取作为方法参数(parameterType)传递的属性,并覆盖已读取的同名属性。
    4、通过方法参数传递的属性具有最高优先级,resource/url属性中指定的配置文件次之,最低优先级的是properties属性中指定的属性。
-->

2、Setting

它们会修改MyBatis在运行时的行为方式,ibatis的全局配置参数,包括很多的性能参数(最大线程数、最大等待时间等),通过调用这些性能参数使用ibatis达到高性能的运行。MyBatis运行时调整全局参数,相当于软件运行时的参数。(需要小心配置,配置参数会影响MyBatis的执行)

3、typeAlias

<!--
    1、类型别名是为Java类型设置一个短的名字。它只和XML配置有关,存在的意义仅在于用来减少类完全限定名的冗余。 
    2、自定义别名:alias别名;type类型。如果指定包中所有类都有别名,使用类名作为别名(大小写不敏感)。
-->

<typeAliases>
    <typeAlias alias="user" type="com.entity.User"/>
    <package name="com.entity"/>
</typeAliases>

4、environments

MyBatis可以配置成适应多种环境,这种机制有助于将SQL映射应用于多种数据库之中。尽管可以配置多个环境,每个SqlSessionFactory实例只能选择其一。所以,如果你想连接两个数据库,就需要创建两个SqlSessionFactory实例,每个数据库对应一个。为了指定创建哪种环境,只要将它作为可选的参数传递给SqlSessionFactoryBuilder即可。

<!-- 可以接受环境配置的两个方法签名 -->
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);

<!-- 如果忽略了环境参数,那么默认环境将会被加载 -->
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, properties);

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
    </transactionManager>
    <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>

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

<transactionManager type="MANAGED">
      <property name="closeConnection" value="false"/>
</transactionManager>

5、mappers

这些配置会告诉了 MyBatis 去哪里找映射文件,剩下的细节就应该是每个 SQL 映射文件了

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
</mappers>

<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>

<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>

<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>
🐶 您的支持将鼓励我继续创作 🐶
-------------本文结束感谢您的阅读-------------