<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"" target="_blank">http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--放在最上边-->
<!--属性类 java.util.properties 是一个Map集合。key和value都是string-->
<!--在properties标签中可以配置很多属性
这是其中的一个属性<property name="属性名" value="属性值"/>
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>也可以链接db.properties文件
从绝对路径加载资源 绝对路径怎么写 ? file:///路径
<properties url="file:///d:/....."
-->
<properties resource="db.properties"></properties>
<!--开启mybatis对标准日志的实现-->
<!--<settings>-->
<!-- <setting name="logImpl" value="STDOUT_LOGGING"/>-->
<!--<setting name="logImpl" value="SLF4J"/>-->
<!--</settings>-->
<!--读取properties文件-->
<!--配置连接数据库环境 default默认环境 -->
<!--默认环境是什么意识?当你使用mybatis创建sqlSessionFactory对象的·时候,没有指定到环境,默认使用那个环境-->
<environments default="powernodeDB">
<!--一般一个数据库会对应一个sqlSessionFactory对象-->
<!--一个环境-->
<!--连接数据库的某个环境-->
<environment id="powernodeDB">
<!--事务管理-->
<transactionManager type="JDBC"/>
<!--数据源-->
<dataSource type="POOLED">
<!--设置连接数据库的驱动-->
<property name="driver" value="${driver}"/>
<!--设置连接数据库的url-->
<property name="url" value="${url}"/>
<!--设置连接数据库的用户名-->
<property name="username" value="${username}"/>
<!--设置连接数据库的密码-->
<property name="password" value="${password}"/>
<!--提醒:正在使用连接池的话,池中有很多参数可以设置的,设置好参数,可以让连接池发挥更好,事半功倍的效果-->
<!--具体连接池当中的参数如何配置呢?需要反复的根据当前的业务情况测试-->
<!--poolMaximumActiveConnections:连接池当中最多的正在使用链接对象的上限,最多有多少个链接可以活动。默认值10-->
<property name="poolMaximumActiveConnections" value="10"/>
<!--每隔2秒打印日志 并尝试获取链接对象-->
<property name="poolTimeToWait" value="2000"/>
<!--强行让某个链接空闲,超时时间的测试-->
<property name="poolMaximumCheckoutTime" value="10000"/>
<!--假设最多的连接数量是: 10个 // poolMaximumIdleConnections最多的空闲数量
最多空闲的数量是: 5个。
假设目前已经空闲5个了。马上第6个要空闲了
假设第6个空闲下来了。此时连接池为了保证最多空闲的数量5个,会真正关闭多余的空闲的连接对象.-->
<property name="poolMaximumIdleConnections" value="5"/>
</dataSource>
</environment>
<!--这是mybatis的另一个环境,也就是链接数据库是另一个数据库-->
<!--连接数据库的某个环境-->
<environment id="mybatisDB">
<!--transactionManager标签
1.作用 配置事务管理 指定mybatis具体用什么方式管理事务
2.type用两个值 第一个JDBC使用原生的JDBC代码管理事务
conn.setAutoCommit(false)
....
第二个MANAGED :-mybatis不在负责事务管理,将事务管理交给其他的JEE(javaEE)例如spring
3大小写无所谓 但不能写其他值 只能二选一
4.在mybatis提供一个事务管理器接口 Transaction
该接口两个实现类
JdbcTransaction
ManagedTransaction
如果type="JDBC",那么底层会实例化JdbcTransaction对象
如果type="MANAGED"那么底层会实例化ManagedTransaction对象
-->
<transactionManager type="JDBC"/>
<!--
dataSource 被称为 数据源,
1.作用是什么? 为程序提供Connection对象,(但凡是给程序员提供Connection对象的,都叫做数据源)
2.数据源实际上是一套规范。JDK中有这套规范 javax.sql.DataSource (这个数据源规范,这套接口实际上是JDK规定的)
3.我们自己也可以编写数据源组件,只要实现javax.sql.DataSource接口就行了,实现接口当中所有的方法,这样就有了自己的数据源
比如你可以写一个属于自己的数据库连接池(数据库连接池是提供链接对象的,所有的数据库据连接池就是一个数据库 )
4.常见的数据源有那些呢【常见的数据库连接池有哪些?】
阿里巴巴的德鲁伊连接池 druid
c3p0 dbcp
<dataSource type="指定数据源的类型就是指定使用那个数据库连接池...">
5.type用来指定数据源的类型,就是指定具体使用什么方式来获取Connection对象,
type有三个值可选,必须三选一 UNPOOLED|POOLED|JNDI
UNPOOLED:不使用数据库连接池技术。每一次请求过来之后,都是创建新的Connection对象
POOLED:使用mybatis自己实现的数据库连接池
JNDI:集成其他第三方的数据库连接池 实际上是一套规范。谁实现了这套规范?大部分web容器都实现了这套规范
例如:tomcat jetty websphere这些服务器都实现了规范
JNDI是:java命名目录接口 tomcat服务器实现了这一规范
-->
<dataSource type="POOLED">
<!--设置连接数据库的驱动-->
<property name="driver" value="${driver}"/>
<!--设置连接数据库的url-->
<property name="url" value="${url1}"/>
<!--设置连接数据库的用户名-->
<property name="username" value="${username}"/>
<!--设置连接数据库的密码-->
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--引入映射文件-->
<mappers>
<!--mapper resource="UserMapper.xml"/-->
<!--以后凡是遇到resource这个单词,大部分情况下,这种加载资源就是从类的根目录下开始加载的。-->
<mapper resource="CarMapper.xml"/>
<!--url 从绝对路径当中加载资源 语法格式<mapper url="file///:d/CarMapper.xml"/> 不建议-->
</mappers>
</configuration>