欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > Mybatis核心配置文件的详解

Mybatis核心配置文件的详解

2024/10/26 0:28:41 来源:https://blog.csdn.net/gege_0606/article/details/142639556  浏览:    关键词:Mybatis核心配置文件的详解

MyBatis 中的 environments:

<environments default="mybatisDB">
  • environments 标签:这个标签用于定义多个数据库环境,通常用于在不同环境(如开发、测试、生产等)下切换数据库连接。
  • default 属性default="mybatisDB" 表示设置了一个默认的数据库连接环境为 mybatisDB,当 MyBatis 创建 SqlSessionFactory 时,如果没有明确指定环境,MyBatis 会默认使用这个环境。也就是说,如果你不手动指定环境,MyBatis 会默认选择你在 default 属性中指定的环境。

environment 标签

<environment id="powernodeDB">
  • id="powernodeDB":这个属性用于给环境配置起一个唯一标识符,这里标识符为 powernodeDB。你可以在代码中通过指定 powernodeDB 来选择该配置进行数据库连接。

  • 一个 environment 标签表示一个完整的数据库连接环境配置,每个环境需要配置以下两部分:

    • 事务管理器 (transactionManager)
    • 数据源配置 (dataSource)

事务管理器 (transactionManager) 

<transactionManager type="JDBC"/>
  • transactionManager 标签:这个标签指定了事务管理的方式。在这里type="JDBC" 表示使用 JDBC 自带的事务管理机制。JDBC 事务管理会自动提交和回滚事务,通常适用于简单的事务需求。

  • MyBatis 支持两种类型的事务管理器:

    • JDBC:直接使用 JDBC 的提交和回滚功能管理事务。
    • MANAGED:表示让容器管理事务,通常在应用服务器(如 Spring)中使用。如果你配置了 MyBatis 的事务管理器为 MANAGED,但并没有使用像 Spring 或 Java EE 容器来管理事务,这种情况下就相当于 没有显式的事务控制。每条 SQL 语句会立即执行并自动提交。

数据源配置 (dataSource) 

<dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/powernode"/><property name="username" value="root"/><property name="password" value="root"/>
</dataSource>
  • dataSource 标签用于配置数据库连接的详细信息。在这里,type="POOLED" 表示使用数据库连接池。dataSource被称为数据源。dataSource作用是什么?为程序提供Connection对象。(但凡是给程序提供Connection对象的,都叫做数据源。) 数据源实际上是一套规范。JDK中有这套规范:javax.sql.Datasource,这个数据源的规范,这套接口实际上是JDK规定的。我们自己也可以编写数据源组件,只要实现javax.sql.DataSource接口就行了。实现接口当中所有的方法。这样就有了自己的数据源MyBatis 提供了三种类型的数据源:

    • UNPOOLED:每次数据库请求都会创建和关闭一个新的数据库连接,性能较低,适用于小型应用。
    • POOLED:使用数据库连接池,连接被复用,能够显著提高性能,适用于生产环境。MyBatis 内置的连接池:MyBatis 自带了一个简单的连接池实现。配置好 driverurlusernamepassword 后,MyBatis 会自动管理连接池,负责连接的复用和管理。
    • JNDI:通过 JNDI 获取数据源,通常在应用服务器上使用。JNDI是一套规范。谁实现了这套规范呢?大部分的web容器都实现了JNDI规范:
      • 例如:Tomcat、Jetty、WebLogic、WebSphere,这些服务器(容器)都实现了JNDI规范,

数据源的各个属性

  • driver:指定 JDBC 驱动类,这里是 com.mysql.cj.jdbc.Driver,表示 MySQL 数据库使用的驱动程序。
  • url:数据库的连接 URL。jdbc:mysql://localhost:3306/powernode 表示连接的是本地的 MySQL 数据库,端口号为 3306,数据库名称为 powernode
  • usernamepassword:指定连接数据库所需的用户名和密码,这里分别是 rootroot
特性POOLEDJNDI
连接池实现者由 MyBatis 自己实现,内置简单的连接池机制由应用服务器(如 Tomcat、JBoss 等)实现
连接管理方式MyBatis 自行管理数据库连接池应用服务器管理,MyBatis 通过 JNDI 查找
适用场景小型到中型应用,独立运行的 Java 程序大型企业级应用,需要跨多个环境的数据库配置
性能优化适用于生产环境,可以复用连接提升性能由应用服务器提供的连接池,支持高性能和管理
配置难度简单,直接在 MyBatis 配置文件中配置数据库连接需要在应用服务器中配置,并在 MyBatis 中引用
灵活性连接池设置简单,适合独立应用更加灵活,支持配置外置化和跨环境切换

properties

<properties> 标签是什么?

<properties> 标签用于加载外部的属性文件(如 jdbc.properties),这个文件通常包含与数据库连接相关的信息。通过这种方式,你可以将数据库连接信息和实际的程序代码分离,便于后续的维护和修改。

具体结构

假设有一个 jdbc.properties 文件,里面可能包含如下信息:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.username=root
jdbc.password=123456

这个文件定义了数据库的驱动、URL、用户名和密码,这些都是数据库连接所必需的。在 MyBatis 的 mybatis-config.xml 配置文件中加载这个属性文件:

<properties resource="jdbc.properties" />

通过这个 <properties> 标签,MyBatis 会从类路径中找到 jdbc.properties 文件,并加载其中的配置信息。这样你就可以在 MyBatis 的配置文件中使用这些属性。

使用这些属性:

在 MyBatis 配置文件中的其他地方,例如数据库连接的配置部分,你可以通过 ${} 语法引用这些属性:

<environment id="development"><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource>
</environment>

在上面的例子中${jdbc.driver}${jdbc.url}${jdbc.username}${jdbc.password} 分别引用了 jdbc.properties 文件中的属性。这样做的好处是,如果你想修改数据库的连接信息,只需要修改 jdbc.properties 文件,而不需要修改 MyBatis 的配置文件。

总结:

  1. <properties> 标签:用于加载外部的属性文件。
  2. 属性文件(如 jdbc.properties:存储数据库的配置信息(如 URL、用户名、密码等)。
  3. ${} 语法:在 MyBatis 配置文件中引用属性文件中的值

为什么这样设计?

  • 模块化:将配置和代码分开,方便修改和维护。
  • 安全性:如果你把数据库密码等信息存放在外部文件中,并且这个文件不被直接暴露,可以提高系统的安全性。
  • 可维护性:当需要更改数据库配置时,直接修改属性文件就可以了,程序代码不需要改动。

这样处理的优势就是避免硬编码数据库信息,如果你需要改变环境或者数据库,只需更改属性文件中的配置信息,而不必更改应用程序的代码。

总结

  • 默认环境:配置中设置了 default="mybatisDB",这表示在没有指定环境的情况下,MyBatis 会使用 mybatisDB 作为默认数据库连接环境。
  • 事务管理:通过 transactionManager 标签,使用了 JDBC 的事务管理,适合简单的事务处理。
  • 数据源配置:使用连接池 (POOLED),通过指定 driverurlusernamepassword,MyBatis 能够连接到指定的 MySQL 数据库。

扩展说明

如果你的应用程序中存在多个数据库环境(如开发、测试和生产环境),你可以为每个环境配置不同的 environment,并在需要时手动选择。比如,你可以定义不同的 id 来区分开发和生产环境:

<environment id="development"><!-- 配置开发环境的数据源和事务管理器 -->
</environment><environment id="production"><!-- 配置生产环境的数据源和事务管理器 -->
</environment>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com