• 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>
      <!--resource是在类的根路径下查找,url是绝对路径,如果配置两个,下面不用子属性property -->
      <properties resource="路径">
         <property name="属性名" value="属性值"/>
      </properties>
      <environments default="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
          <!--mysql数据库连接信息,如果有配置properties,可以使用以下但是${里面写properties的属性名}-->
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
      	<!--这里指定XXXMapper.xml文件的路径,resource是在类的根路径下查找,url是绝对路径-->
        <mapper resource="路径"/>
        <mapper url="file:///绝对路径"/>
        <mapper class="完全限定接口名"/>
        <package name="包名"/>
      </mappers>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    configuration

    configuration:根标签,表示配置信息。

    properties

    在properties标签中可以配置很多property属性
    java.util.Properties类。是一个Map集合。key和value都是String类型

    • resource属性:使⽤相对于类路径的资源引⽤⽅式
    • url属性:使⽤完全限定资源定位符(URL)⽅式

    property

    properties的子属性
    是一个Map集合。

    • name属性:属性名,Map集合的key
    • value属性:属性值,Map集合的value

    environments

    environments:环境(多个),以“s”结尾表示复数,也就是说mybatis的环境可以配置多个数据源。

    • default属性:表示默认使⽤的是哪个环境,default后⾯填写的是environment的id。default的值只需要和environment的id值⼀致即可。

    默认环境:当使用mybatis创建SqlSessionFactory对象的时候,没有指定环境的话,默认使用哪个环境。

    environment

    environment:具体的环境配置(主要包括:事务管理器的配置 + 数据源的配置),一般一个数据库配置一个环境

    • 属性id:给当前环境⼀个唯⼀标识,该标识⽤在environments的default后⾯,⽤来指定默认环境的选择。

    在源码里面除了bulid方法除了传一个InputStream,还有其他的重载方法

    请添加图片描述
    另一个重载方法可传一个environment,它就是environment标签的属性id,也就是说,当创建SqlSessionFactory对象的时候,没有指定环境的话,默认是environments标签的default属性的值,如果指定属性的话,传的是environment的id,表示使用这个数据库环境。

    transactionManager

    transactionManager:配置事务管理器

    • type属性:指定事务管理器具体使⽤什么⽅式,可选值包括两个
      • JDBC:使⽤JDBC原⽣的事务管理机制。底层原理:事务开启 conn.setAutoCommit(false);
        …处理业务…事务提交conn.commit();
      • MANAGED:交给其它容器来管理事务,⽐如WebLogic、JBOSS等。如果没有管理事务的容器,则没有事务。没有事务的含义:只要执⾏⼀条DML语句,则提交⼀次。

    在mybatis中提供了一个事务管理器接口:Transaction

    该接口下有两个实现类:
    JdbcTransaction
    ManagedTransaction
    
    如果type="JDBC",那么底层会实例化JdbcTransaction对象。
    如果type="MANAGED",那么底层会实例化ManagedTransaction。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    dataSource

    dataSource:指定数据源(数据库连接池),为程序提供Connection对象。

    • type属性:⽤来指定具体使⽤的数据库连接池的策略,可选值包括三个
      • UNPOOLED:采⽤传统的获取连接的⽅式,虽然也实现Javax.sql.DataSource接⼝,但是并没有使⽤池的思想。每一次请求过来之后,都是创建新的Connection对象。
      • POOLED:采⽤传统的javax.sql.DataSource规范中的连接池,使用mybatis自己实现的数据库连接池。
      • JNDI:集成其它第三方的数据库连接池,采⽤服务器提供的JNDI技术实现,来获取DataSource对象,不同的服务器所能拿到DataSource是不⼀样。如果不是web或者maven的war⼯程,JNDI是不能使⽤的。例如把C3P0配置到Tomcat上。
    property
    dataSource的type属性为UNPOOLED
    • driver – 这是 JDBC 驱动的 Java 类全限定名(并不是 JDBC 驱动中可能包含的数据源类)。
    • url – 这是数据库的 JDBC URL 地址。
    • username – 登录数据库的用户名。
    • password – 登录数据库的密码。
    • defaultTransactionIsolationLevel – 默认的连接事务隔离级别。
    • defaultNetworkTimeout – 等待数据库操作完成的默认网络超时时间(单位:毫秒)
    dataSource的type属性为POOLED

    除了上述提到 UNPOOLED 下的属性外,还有更多属性用来配置 POOLED 的数据源:

    • poolMaximumActiveConnections – 在任意时间可存在的活动(正在使用)连接数量,默认值:10
    • poolMaximumIdleConnections – 任意时间可能存在的空闲连接数。
    • poolMaximumCheckoutTime – 在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000
      毫秒(即 20 秒)
    • poolTimeToWait –
      这是一个底层设置,如果获取连接花费了相当长的时间,连接池会打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直失败且不打印日志),默认值:20000
      毫秒(即 20 秒)。
    • poolMaximumLocalBadConnectionTolerance – 这是一个关于坏连接容忍度的底层设置,
      作用于每一个尝试从缓存池获取连接的线程。
      如果这个线程获取到的是一个坏的连接,那么这个数据源允许这个线程尝试重新获取一个新的连接,但是这个重新尝试的次数不应该超过poolMaximumIdleConnections 与 poolMaximumLocalBadConnectionTolerance之和。 默认值:3(新增于 Mybatis3.4.5)
    • poolPingQuery – 发送到数据库的侦测查询,用来检验连接是否正常工作并准备接受请求。默认是“NO PING QUERY SET”,这会导致多数数据库驱动出错时返回恰当的错误消息。
    • poolPingEnabled – 是否启用侦测查询。若开启,需要设置 poolPingQuery 属性为一个可执行的 SQL语句(最好是一个速度非常快的 SQL 语句),默认值:false。
    • poolPingConnectionsNotUsedFor – 配置 poolPingQuery的频率。可以被设置为和数据库连接超时时间一样,来避免不必要的侦测,默认值:0(即所有连接每一时刻都被侦测 — 当然仅当poolPingEnabled 为 true 时适用)。
    dataSource的type属性为JNDI
    • initial_context – 这个属性用来在 InitialContext中寻找上下文(即,initialContext.lookup(initial_context))。这是个可选属性,如果忽略,那么将会直接从InitialContext 中寻找 data_source 属性。
    • data_source – 这是引用数据源实例位置的上下文路径。提供了 initial_context
      配置时会在其返回的上下文中进行查找,没有提供时则直接在 InitialContext 中查找。

    mappers

    mappers:在mappers标签中可以配置多个sql映射⽂件的路径。

    mapper

    mapper:配置某个sql映射⽂件的路径

    • resource属性:使⽤相对于类路径的资源引⽤⽅式,映射文件需要放到类路径下。
    • url属性:使⽤完全限定资源定位符(URL)⽅式,需要提供一个绝对路径
    • class属性:使用映射器接口实现类的完全限定类名,会在接口这个包下寻找接口名相同的XML文件,需要保证映射文件和接口必须在同一个包下(或者在类路径资源下有与接口包名相同的目录名)。

    package

    将包内的映射器接口实现全部注册为映射器

    • name属性:包名,需要保证映射文件和接口必须在同一个包下(或者在类路径资源下有与接口包名相同的目录名),并且名字一致。
  • 相关阅读:
    《动手学深度学习 Pytorch版》 10.2 注意力汇聚:Nadaraya-Watson 核回归
    java版本企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发
    生成式AI设计模式:综合指南
    ORA-07445: exception encountered: core dump [kdxlin()+4088]---惜分飞
    AI 辅助学习:Spring Boot 集成 PostgreSQL 并设置最大连接数
    计算机毕业设计(附源码)python缘来有交友平台系统
    面试系列多线程:Tomcat线程池的原理
    数据结构与算法-快速排序第一趟结果
    项目开发必备git操作
    【超硬核】-1万字详尽大厂团队SQL开发规范,Review没人能笑着出来
  • 原文地址:https://blog.csdn.net/weixin_45832694/article/details/127435658