MyBatis 配置XML

  • 配置XML

    在上一章中,我们已经了解了如何安装MyBatis。本章讨论如何使用XML文件配置MyBatis。由于我们正在与数据库进行通信,因此我们必须配置数据库的详细信息。配置XML是用于基于XML的配置的文件。通过使用此文件,您可以配置各种元素。以下编程是MyBatis配置文件的典型结构。
    
    <configuration>
    
       <typeAliases>
          <typeAlias alias = "class_alias_Name" type = "absolute_clas_Name"/>
       </typeAliases>
                    
       <environments default = "default_environment _name">
          <environment id = "environment_id">
             <transactionManager type = "JDBC/MANAGED"/>  
                            
                <dataSource type = "UNPOOLED/POOLED/JNDI">
                   <property name = "driver" value = "database_driver_class_name"/>
                   <property name = "url" value = "database_url"/>
                   <property name = "username" value = "database_user_name"/>
                   <property name = "password" value = "database_password"/>
                </dataSource>        
                                    
          </environment>
       </environments>
            
       <mappers>
          <mapper resource = "path of the configuration XML file"/>
       </mappers>
       
    </configuration>
    
    让我们一一讨论配置XML文件的重要元素(标签)。
  • environments 标签

    在environments元素中,我们配置我们在应用程序中使用的数据库的环境。在MyBatis中,您可以通过配置多个environments元素来连接到多个数据库。为了配置环境,我们提供了两个子标签,即transactionManager和dataSource。
    transactionManager标签
    MyBatis支持两个事务管理器,即JDBC和MANAGED
    • 如果我们使用JDBC类型的事务管理器,则应用程序负责事务管理操作,例如,提交,回滚等。
    • 如果我们使用MANAGED类型的事务管理器,则应用程序服务器负责管理连接生命周期。它通常与Web应用程序一起使用。
    dataSource标签
    它用于配置数据库的连接属性,例如我们要连接的数据库的驱动程序名称,URL,用户名和密码。它有三种类型,即-
    • UNPOOLED - 对于UNPOOLED数据源类型,MyBatis只需打开和关闭每个数据库操作的连接即可。它有点慢,通常用于简单的应用程序。
    • POOLED - 对于POOLED数据源的类型,MyBatis将维护一个数据库连接池。并且,对于每个数据库操作,MyBatis使用这些连接之一,并在操作完成后将它们返回到池中。它减少了创建新连接所需的初始连接和身份验证时间。
    • JNDI - 对于JNDI数据源类型,MyBatis将从JNDI数据源获取连接。
    这是您如何在实践中使用环境标签的方法-
    
    <environments default = "development">
       <environment id = "development">
          <transactionManager type = "JDBC"/>         
          <dataSource type = "POOLED">
             <property name = "driver" value = "com.mysql.jdbc.Driver"/>
             <property name = "url" value = "jdbc:mysql://localhost:3306/details"/>
             <property name = "username" value = "root"/>
             <property name = "password" value = "password"/>
          </dataSource>            
       </environment>
    </environments>
    
  • typeAliases标签

    不必在任何地方都指定绝对的类名,我们可以使用typeAliases,它是Java类型的缩写。假设我们在名称为cainiaoya.com.mybatis_examples的包中的Student.java文件中有一个Student类,则绝对类名称为cainiaoya.com.mybatis_examples.Student。您可以使用以下名称声明该类的别名,而不是每次都使用全名来寻找该类:
    
    <typeAliases>
       <typeAlias alias = "Student" type = "mybatis.Student"/>
    </typeAliases>
    
  • mappers 标签

    mappers XML文件是重要文件,其中包含映射的SQL语句。mapper的元素用于在MyBatis的配置文件中配置这些mappers xml文件的位置(此元素包含四个属性,即resource,url,class和name)。
    例如,映射器xml文件的名称是Student.xml,它位于名为mybatis的包中,那么您可以如下所示配置映射器标记。
    
    <mappers>
       <mapper resource = "mybatis/Student.xml"/>
    </mappers>
    
    • 属性resource指向XML文件的类路径。
    • 属性url指向xml文件的标准路径。
    • 我们可以使用映射器接口而不是xml文件,属性class指向映射器接口的类路径。
    • 属性name指向映射器接口的包名称。在本章提供的示例中,我们使用resource属性指定了映射器XML的类路径。
    除了这些之外,MyBatis文档的配置文件中还可以使用其他元素。有关完整的详细信息,请参阅MyBatis文档
  • MyBatis与MySQL数据库

    MySQL是当今最流行的开源数据库系统之一。让我们创建一个SqlMapConfig.xml配置文件以连接到mysql数据库。下面给出的示例是MySQL数据库的dataSource属性(驱动程序名称,URL,用户名和密码)-
    • driver - com.mysql.jdbc.Driver
    • url - jdbc:mysql://localhost:3306/details(假定数据库为“details”)
    • username - root
    • password - password
    我们使用JDBC类型的事务管理器,这意味着我们必须在应用程序内手动执行诸如提交和回滚之类的操作。我们使用UNPOOLED类型的dataSource,这意味着将为每个数据库操作创建新的连接。因此,建议在数据库操作完成后手动关闭连接。
    SqlMapConfig.xml
    下面给出的是本教程中使用的示例的XML配置。将下面给出的内容复制到一个文本文件中,并将其另存为SqlMapConfig.xml。我们将在本教程提供的所有示例中使用此文件。
    
    <?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>
                    
       <environments default = "development">
          <environment id = "development">
             <transactionManager type = "JDBC"/> 
                            
             <dataSource type = "POOLED">
                <property name = "driver" value = "com.mysql.cj.jdbc.Driver"/>
                <property name = "url" value = "jdbc:mysql://localhost:3306/details?useSSL=false&serverTimezone=UTC"/>
                <property name = "username" value = "root"/>
                <property name = "password" value = "root"/>
             </dataSource>   
             
          </environment>
       </environments>
                    
       <mappers>
          <mapper resource = "Student.xml"/>
       </mappers>
       
    </configuration>