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>

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。

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属性:包名,需要保证映射文件和接口必须在同一个包下(或者在类路径资源下有与接口包名相同的目录名),并且名字一致。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

忆亦何为

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

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

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

打赏作者

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

抵扣说明:

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

余额充值