MyBatis核心配置文件详解

目录

一、configuration标签

二、properties 标签

 三、settings标签

四、environments 标签

transactionManager标签        

dataSource标签

  五、mappers标签


 首先说明本文章学习笔记,可能不太专业大白话居多,请酌情观看

在这里附上mybatis中文文档

MyBatis中文网

<?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="powernode">
        <environment id="powernode">
            <transactionManager type="JDBC"/>
            <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="123456"/>
            </dataSource>
        </environment>
        <environment id="mybatis">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="CarMapper.xml"/>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

一、configuration标签

<configuration></configuration> 根标签

        根标签,表示配置信息

        所有的配置属性都写在这个标签内部,并且在该标签内部属性有先后顺序之分必须按照该顺序执行

二、properties 标签

 <properties></properties>属性标签

        这些属性可以一些属性在外部定义,并且可以动态替换(按照我的理解来说就相当于在顶层定义了一个变量,在该文件内可以通过变量名(name)实现调用)

通过在<properties></properties>中嵌套<property></property>的方式在根标签中定义出来:

    <properties>
        <property name="jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="jdbc.url" value="jdbc:mysql://localhost:3306/powernode"/>
        <property name="jdbc.username" value="root"/>
        <property name="jdbc.password" value="123456"/>
    </properties>

 要使用定义的属性要用${}这个符号并在大括号里面添加name值

<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>

这个属性不仅可以在properties 元素的子元素中设置,也可以在java属性文件中配置这些属性

在这里我们创建一个文件jdbc.properties,并将数据书写好

不过这个尽然不需要导出,直接导入就可以使用,有点神奇

注意:这个文件不一定非得建在resources根路径下,可以建到其他包内,在使用中只需表明清楚即可

 使用这个文件里的属性这个就得用到properties标签里面的resource属性了

resource中写入它的地址即使用成功,

也可以使用url属性,在使用url时要在前面添加file:///再添加你的地址但是这个并不推荐,这样移植性不好,如果将代码从windos转到Linux等其他操作系统当中会报错

<properties resource="jdbc.properties"></properties>
<properties url="file:///E:/java/MyBaits/jdbc.properties"></properties>

 三、settings标签

<settings> </settings>设置标签

        这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

该部分内容在官网中解释的很nice请移步官网查看

配置_MyBatis中文网

四、environments 标签

<environments></environments>环境配置标签

         这个标签是用来配置sql数据库的,可以将 SQL 映射应用于多种数据库之中

        在这个<environments></environments>标签中通过<environment></environment>标签配置数据库,一个数据库对应一个<environment></environment>标签对应一个SqlSessionFactory实例,而<environments></environments>标签只能有一个(这两个单词一个有s一个没注意观察)

        使用方法如下:

    <environments default="powernode">
        <environment id="powernode">
            <transactionManager type="JDBC"/>
            <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>
        <environment id="mybatis">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

注意一些关键点:

  • 默认使用的环境 ID(比如:default="development")。
  • 每个 environment 元素定义的环境 ID(比如:id="development")。
  • 事务管理器的配置(比如:type="JDBC")。
  • 数据源的配置(比如:type="POOLED")。

 在这个标签中除了environment标签还有其他一些标签

transactionManager标签        

 <transactionManager />事务管理器标签

        这个标签有两种type类型[JDBC|MANAGED]

        JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。也就是说myBatis自己使用JDBC来管理事务

        MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。简单来说就是myBatis将这些事务托管给JEE(javaEE)等容器来托管

当mybatis找不到容器的支持时:没有事务。也就是说只要执行一条DML语句,则提交一次

使用方式:

<transactionManager type="JDBC"/>

dataSource标签

<dataSource></dataSource>数据源标签也就是连接数据库的

        使用这个标签需注意它的type值[UNPOOLED|POOLED|JNDI]

        UNPOOLED:不使用连接池,对于一些可用性要求不高的简单应用程序来说,是一个很好的选择,它每一次访问数据库都得重新创建一个连接,不用了就直接销毁这个连接
        POOLED:使用连接池,这个就与UNPOOLED截然相反,它会将一些连接放到一个池子当中,当每次访问数据库的时候,它就会从池当中拿出连接来进行访问,当使用完毕的时候就会又放回到池子当中

        JNDI:表示对接JNDI服务器中的连接池。这种方式给了我们可以使用第三方连接池的接口。如果想使用dbcp、c3p0、druid(德鲁伊)等,需要使用这种方式。

        在使用<dataSource></dataSource>标签的时候会设置一些参数用来约束连接,设置参数我们会用到上面用到过的一个标签<property></property>标签,通过这个标签的name和value属性来设置参数如:

  • driver – 这是 JDBC 驱动的 Java 类全限定名(并不是 JDBC 驱动中可能包含的数据源类)。
  • url – 这是数据库的 JDBC URL 地址。
  • username – 登录数据库的用户名。
  • password – 登录数据库的密码。
<dataSource type="POOLED">
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</dataSource>

   上面这几个是UNPOOLED|POOLED共有的,而我们的POOLED由于引入了池的概念,所以也会有一些可以约束池的属性

  • poolMaximumActiveConnections – 在任意时间可存在的活动(正在使用)连接数量,默认值:10(在池中最多能有几个连接对象)
  • poolMaximumIdleConnections – 任意时间可能存在的空闲连接数。(在池中能有几个闲着的连接,如果一旦超出这个值,那么就会销毁掉一个连接)
  • poolMaximumCheckoutTime – 在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000 毫秒(即 20 秒)(如果你的请求多余池中连接就会等待,如果超过设置的这个时间就会回池,就是让他强行执行一遍)
  • poolTimeToWait – 这是一个底层设置,如果获取连接花费了相当长的时间,连接池会打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直失败且不打印日志),默认值:20000 毫秒(即 20 秒)。(当请求获取不到闲的连接时,会每隔20秒打印一次日志,防止代码有误,导致在这里傻等)

这边只写了部分常用的配置,详情还得移步到官网查看

  五、mappers标签

        <mappers></mappers>映射器,通俗来说就时去找sql语句,来执行它

        在使用这个标签时通常会搭配它的子标签<mapper />

        而<mapper />标签有两个属性分别是resource和url

resource是相对与类路径,移植性比较好

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

 url是固定路径,移植性比较差例如:将windows代码移植到Linux等操作系统中则可能报错 

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

注意:一个XxxxMapper.xml文件就会有一个<mapper />标签

再次说明,本文章为学习笔记,可能会有不准确的地方,欢迎指正 

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值