当前位置: 首页 > 图灵资讯 > 技术篇> mybatis核心配置文件

mybatis核心配置文件

来源:图灵教育
时间:2023-06-01 09:47:54

1.configuration:根标签表示配置信息。24

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

default属性:表示默认使用⽤default后的环境是什么?⾯environmentid填写。default

只需与environment的id值相匹配⼀致即可。

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

id:给当前环境⼀个唯⼀标志,这个标志⽤default后,environments⾯,⽤指定默认环境

选择。

2.default的作用24

mybatis-config.在xml核心文件中

default标签的作用是default标签背后是什么,默认执行的数据库是什么?

///解释mybatis-config.xml核心文件中的/// default标签的作用  也就是说,default标签背后是什么?默认执行的数据库是哪个? 24@Testpublic void testEnvironment() throws Exception{// 获取SqlSessionFactory对象(默认获取)SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 这种方法是获得默认环境SqlSessionFactory sqlSessionFactory =sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));SqlSession sqlSession = sqlSessionFactory.openSession();// SQL语句SQLSession执行.insert("car.insertCar");///写所有这样的sqlsession.commit();sqlSession.close();// 该方法是通过环境ID使用指定的环境,这里指定使用powernodedB对应的数据库SqlSessionFactory sqlsessionFactory1 =sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"), "powernodeDB");SqlSession sqlsession = sqlsessionFactory1.openSession();// 执行SQL语句sqlsession.insert("car.insertCar");sqlsession.commit();sqlsession.close();}

3.transactionManager:配置事务管理器25

1.功能:配置事务管理器。指定mybatis如何管理事务。

2.type属性有两个值:JDBCMANAGED

3.1第一个:JDBC:

使用原始JDBC代码来管理事务。

conn.setAutoCommit(false);

...

conn.commit();

3.2第二个:MANAGED:

mybatis不再负责事务管理,而是将事务管理交给其他JEEE(JavaEE)管理容器。例如:spring

3.大小写无所谓。不缺大小写。但是不能写其他值。只能选择一个:jdbc、managed

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

接口下有两个实现类:

JdbcTransaction

ManagedTransaction

如果type=”JDBC",那么底层就会实例化Jdbctransaction对象。

如果type=”MANAGED",底层将实例化Managedtransaction

4.dataSource26

dataSource被称为数据源。

4.1dataSource的作用是什么?26

为程序提供Conection对象。(任何为程序提供Conection对象的人都被称为数据源。)

数据源实际上是一套规范。JDK中有这套规范:javax.sql.DataSource(这个数据源的规格实际上是JDK规定的。)

只要实现javax,我们也可以自己编写数据源组件.sql.DataSource接口就够了。在接口中实现所有方法。这样就有了自己的数据源。

例如,您可以编写自己的数据库连接池(数据库连接池提供连接对象,因此数据库连接池是数据源)。

4.2常见的数据源组件有哪些【常见的数据库连接池有哪些】?26

阿里巴巴德鲁伊连接池:druid

c3p0

dbcp

...

mybatis核心配置文件_sql

4.3type属性263type属性

用于指定数据源的类型,即指定如何获取Conection对象:

type属性有三个值:必须三选一。

type=[UNPOLED|POOLED|JNDI]"

UNPOOLED:不要使用数据库连接池技术。每次请求过来后,都会创建新的Conection对象。

POOLED:使用mybatis自己实现的数据库连接池。

JNDI:集成其他第三方数据库连接池。

4.3.1JNDI是一套规范。谁实现了这个规范?27

大多数web容器都实现了JNDI规范:

例如:Tomcat、Jetty、WebLogic、WebSphere,JNDI规范已经实现了这些服务器(容器)。

JNDI是:java命名目录接口。tomcat服务器实现了这一标准。

4.3.28POOLED和UNPOLED的区别

UNPOOLED:不要使用数据库连接池技术。每次请求过来后,都会创建新的Conection对象。

POOLED:使用mybatis自己实现的数据库连接池。

4.4再重点说⼀下type=“”POOLED“它的属性是什么?29

poolMaximumActiveConnections:最⼤活动的连接数量。默认值10

poolMaximumIdleConnections:最⼤空闲连接的数量。默认值5

poolMaximumCheckoutTime:强⾏返回池的时间。默认值20秒。

poolTimeToWait:当⽆法律获得空闲连接时,每20秒打印一次⼀次⽇避免因代码配置错误而愚蠢。(时间⻓可配置)

当然还有其他属性。对于连接池,以上⼏个属性⽐较重要。

最⼤活动的连接数量是连接池连接数量的上限。默认值为10。如果有10个请求,⽤这10个连接,第11个请求只能等待空闲连接。

最⼤空闲连接的数量。默认值5。如何有5个空闲连接?当第六个连接需要空闲时,连接池将选择关闭连接对象。以减少数据库的成本。

需要根据系统的并发情况合理调整连接池最多⼤连接数和最多空闲数。充分发挥数据库连接池的性能。[可根据实际情况进入⾏测试,然后调整⼀数量合理。】

<!--提醒:如果连接池正常使用,需要设置池中的许多参数。设置参数可以使连接池发挥得更好。事半功倍。--><!--如何配置连接池中的具体参数?根据目前的业务情况,需要反复进行测试。--><!--poolMaximumActiveConnections:在连接池中使用最多的连接对象的数量上限。最多可以移动多少个连接。默认值10--><property name="poolMaximumActiveConnections" value="3"/><!--每2秒打印一次日志,并尝试获得连接对象--><property name="poolTimeToWait" value="2000"/><!--强行设置连接空闲和超时间的设置--><property name="poolMaximumCheckoutTime" value="10000"/><!--空闲时间最多--><property name="poolMaximumIdleConnections" value="5"/>

@Testpublic void testDataSource() throws Exception{SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// SqlSessionFactory对象:一个数据。不要经常创建这个对象。SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));for (int i = 0; i < 4; i++) {SqlSession sqlSession = sqlSessionFactory.openSession();sqlSession.insert("car.insertCar");// 不要关闭。}}

4.5properties30-31

mybatis提供了更灵活的配置,可以单独写下连接数据库的信息⼀个属性资源⽂在零件中,假设在类的根路上

jdbc创建在径下.properties⽂配置如下:

<!--java.util.Properties类。是Map集合。key和value都是String类型--><!--许多属性可以在properties标签中配置       30--><properties><!--    这是属性之一--><!-- <property name="属性名" value=“属性值”/>--><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="lzl"/></properties><!--    也可以从jdbc开始.将数据库相关信息引入properties配置文件   31--><!--    也可以从jdbc开始.将数据库相关信息引入properties配置文件   31--><!--resource,必须从类别路径下开始寻找资源--><properties resource="jdbc.properties"/><!--资源从绝对路径中加载。如何写绝对路径?file:///路径--><!--    <properties url="file:///e:/jdbc.properties" />-->

5.总代码commtest代码.powernode.mybatis.testConfigurationTest

package com.powernode.mybatis.test;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;////测试核心配置文件的类别   24public class ConfigurationTest {///测试标签    28//type用于指定数据源的类型,它指定了获取Conection对象的具体方式:@Testpublic void testDataSource() throws Exception{SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// SqlSessionFactory对象:一个数据。不要经常创建这个对象。SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));// 多个会话可以通过sqlsessionFactory对象打开。// 会话1/* SqlSession sqlsession = sqlSessionFactory.openSession();sqlsession.insert("car.insertCar");sqlsession.commit();sqlsession.close(); // 因为要测试连接池的效果,关闭是必要的。别忘了,否则测不出来。*/// 会话2/* SqlSession sqlsession2sion = sqlSessionFactory.openSession();sqlsession2sion.insert("car.insertCar");sqlsession2sion.commit();sqlsession2sion.close();*/for (int i = 0; i < 4; i++) {SqlSession sqlSession = sqlSessionFactory.openSession();sqlSession.insert("car.insertCar");// 不要关闭。}}///解释mybatis-config.xml核心文件中的/// default标签的作用  也就是说,default标签背后是什么?默认执行的数据库是哪个? 24@Testpublic void testEnvironment() throws Exception{// 获取SqlSessionFactory对象(默认获取)SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 这种方法是获得默认环境SqlSessionFactory sqlSessionFactory =sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));SqlSession sqlSession = sqlSessionFactory.openSession();// SQL语句SQLSession执行.insert("car.insertCar");///写所有这样的sqlsession.commit();sqlSession.close();// 该方法是通过环境ID使用指定的环境,这里指定使用powernodedB对应的数据库SqlSessionFactory sqlsessionFactory1 =sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"), "powernodeDB");SqlSession sqlsession = sqlsessionFactory1.openSession();// 执行SQL语句sqlsession.insert("car.insertCar");sqlsession.commit();sqlsession.close();}}

resources目录mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!--java.util.Properties类。是Map集合。key和value都是String类型--><!--许多属性可以在properties标签中配置       30--><!--<properties><!–这是属性之一–><!– <property name="属性名" value=“属性值”/>–><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="lzl"/></properties>--><!--    也可以从jdbc开始.将数据库相关信息引入properties配置文件    --><!--    也可以从jdbc开始.将数据库相关信息引入properties配置文件    --><!--resource,必须从类别路径下开始寻找资源--><properties resource="jdbc.properties"/><!--资源从绝对路径中加载。如何写绝对路径?file:///路径       31--><!--    <properties url="file:///e:/jdbc.properties" />--><!--解释environments标签的内容       24--><!--default表示默认使用的环境。--><!--默认环境是什么意思?当您使用mybatis创建SqlsessionFactory对象时,默认使用哪个环境没有指定环境。--><environments default="powernodeDB"><!--其中一个环境。连接的数据库是powernode--><!--一般来说,一个数据库会对应一个SqlSessionFactory对象。--><!--环境environment将对应SqlsessionFactory对象--><environment id="powernodeDB"><!--transactionmanger标签:1.功能:配置事务管理器。指定mybatis如何管理事务。2.type属性有两个值:一是:JDBC: 使用原始JDBC代码来管理事务。conn.setAutoCommit(false);...conn.commit();第二个:MANAGED:mybatis不再负责事务管理,而是将事务管理交给其他JEEE(JavaEE)管理容器。例如,spring3. 大小写无所谓。不缺分大小写。但不能写其他值。只能是二选一:jdbc、managed4. 在mybatis中提供了一个事务管理器接口:transaction接口下有两个实现类:jdbctransactionmansansansaction,如果transactiontiontype=“”JDBC",那么底层就会实例化Jdbctransaction对象。如果type=”MANAGED",底层将实例化Managedtransaction--><transactionManager type="JDBC"/><!--dataSource配置:1.dataSource被称为数据源。2.dataSource的作用是什么?为程序提供Conection对象。(任何为程序提供Conection对象的人都被称为数据源。)3.数据源实际上是一套规范。JDK中有这套规范:javax.sql.DataSource(这套接口实际上是JDK规定的数据源规范。)4.只要实现javax,我们也可以自己编写数据源组件.sql.DataSource接口就够了。在接口中实现所有方法。这样就有了自己的数据源。例如,您可以编写自己的数据库连接池(数据库连接池提供连接对象,因此数据库连接池是数据源)。5.常见的数据源组件有哪些【常见的数据库连接池有哪些】?阿里巴巴德鲁伊连接池:druidc3p0dbcp...6. type属性用于指定数据源的类型,即指定如何获取conection对象:type属性有三个值:必须三选一。type=[UNPOLED|POOLED|JNDI]"UNPOOLED:不使用数据库连接池技术。每次请求过来后,都会创建新的Conection对象。POOLED:使用mybatis自己实现的数据库连接池。JNDI:集成其他第三方数据库连接池。JNDI是一套规范。谁实现了这套规范?大多数web容器都实现了JNDI规范:例如:Tomcat、Jetty、WebLogic、WebSphere,JNDI规范已经实现了这些服务器(容器)。JNDI是:java命名目录接口。Tomcat服务器实现了这一规范。--><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}"/><!--提醒:如果连接池正常使用,需要设置池中的许多参数。--提醒:如果连接池正常使用,需要设置许多参数。设置参数可以使连接池发挥得更好。事半功倍。--><!--如何配置连接池中的具体参数?根据目前的业务情况,需要反复进行测试。--><!--poolMaximumActiveConnections:在连接池中使用最多的连接对象的数量上限。最多可以移动多少个连接。默认值10--><property name="poolMaximumActiveConnections" value="3"/><!--每2秒打印一次日志,并尝试获得连接对象--><property name="poolTimeToWait" value="2000"/><!--强行设置连接空闲和超时间的设置--><property name="poolMaximumCheckoutTime" value="10000"/><!--空闲时间最多--><property name="poolMaximumIdleConnections" value="5"/></dataSource></environment><!--这是mybatis的另一个环境,即连接到的数据库是另一个数据库mybatis--><environment id="mybatisDB"><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="lzl"/></dataSource></environment></environments><mappers><!--resource属性自动从类的根路径下开始寻找资源。--resource属性自动从类的根路径下开始寻找资源。--><mapper resource="CarMapper.xml"/></mappers></configuration>

CarMapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="car"><insert id="insertCar">insert into t_car values(null,“8888”,“沃尔沃”,30.0,“2000-11-11”,“燃油车”</insert></mapper>

jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/powernodejdbc.username=rootjdbc.password=lzl