【SSM】MyBatis(三.核⼼配置⽂件详解)

1.environment

两个数据库都有一张名为car的表:
在这里插入图片描述
在这里插入图片描述

mybatis-config.xml

<?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>
    <settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>

    <!--default表示默认环境,当使用mybatis创建sqlSessionFactory的时候,没有指定环境的话,使用这个环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/sdnu"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
        
        <environment id="mybatisDB">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!--执行XxxxMapper.xml文件的路径-->
        <!--resource属性会自动从类的根路径下开始查找资源-->
        <mapper resource="CarMapper.xml"/>
    </mappers>
</configuration>

CarMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//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-09-08', '燃油车')
    </insert>
</mapper>

测试类
ConfigurationTest.java

package com.sdnu.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;

import java.io.IOException;

public class ConfigurationTest {
    @Test
    public static void main(String[] args) throws IOException {
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
        SqlSession sqlSession = sqlSessionFactory.openSession();
        sqlSession.insert("car.insertCar");
        sqlSession.commit();
        sqlSession.close();

        SqlSessionFactoryBuilder sqlSessionFactoryBuilder1 = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory1 = sqlSessionFactoryBuilder1.build(Resources.getResourceAsStream("mybatis-config.xml"), "mybatisDB");
        SqlSession sqlSession1 = sqlSessionFactory1.openSession();
        sqlSession1.insert("car.insertCar");
        sqlSession1.commit();
        sqlSession1.close();
    }
}

设置断点
在这里插入图片描述
断点前:

在这里插入图片描述
在这里插入图片描述
断点后

在这里插入图片描述
在这里插入图片描述

2.transactionManager

作用:配置任务管理器,指定mybatis用什么方式去管理事务
type属性有两个值

  • JDBC
    使用原生jdbc代码来管理事务
  • MANAGED
    mybatis不再管理事务,而是将事务交给其它JavaEE容器管理,例如spring
    (交给容器去管理事务,但⽬前使⽤的是本地程序,没有容器的⽀持,当mybatis找不到容器的⽀持时:没有事务。也就是说只要执⾏⼀条DML语句,则提交⼀次。)

3. dataSource

(1)dataSource被称为数据源
(2)作用:为程序提供Connection对象。(但凡是给程序提供Connection对象的,都叫做数据源。)
(3)数据源实际上是一套规范。JDK中有这套规范:javax.sql.DataSource(这个数据源的规范,这套接口实际上是JDK规定的。)
(4)我们自己也可以编写数据源组件,只要实现javax.sql.DataSource接口就行了。实现接口当中所有的方法。这样就有了自己的数据源。
比如你可以写一个属于自己的数据库连接池(数据库连接池是提供连接对象的,所以数据库连接池就是一个数据源)。
(5)常见的数据源组件(数据库连接池):druid
(6)type属性用来指定数据源的类型,就是指定具体使用什么方式来获取Connection对象:(type属性有三个值:必须是三选一。
type=“[UNPOOLED|POOLED|JNDI]”)

  • UNPOOLED:不使用数据库连接池技术。每一次请求过来之后,都是创建新的Connection对象。
  • POOLED:使用mybatis自己实现的数据库连接池。
  • JNDI:集成其它第三方的数据库连接池。
    JNDI是一套规范。谁实现了这套规范呢?大部分的web容器都实现了JNDI规范:
    例如:Tomcat、Jetty、WebLogic、WebSphere,这些服务器(容器)都实现了JNDI规范。
    JNDI是:java命名目录接口。Tomcat服务器实现了这个规范。

3.1 使用UNPOOLED

        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="UNPOOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/sdnu"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>

测试程序:

    @Test
    public void testDataSource() throws IOException{
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));

        //通过sqlSessionFactory可以开启多个会话
        //会话1
        SqlSession sqlSession1 = sqlSessionFactory.openSession();
        sqlSession1.insert("car.insertCar");
        sqlSession1.commit();
        sqlSession1.close();

        //会话2
        SqlSession sqlSession2 = sqlSessionFactory.openSession();
        sqlSession2.insert("car.insertCar");
        sqlSession2.commit();
        sqlSession2.close();
    }

在这里插入图片描述

3.2 使用POOLED

针对上面程序改一行:

<dataSource type="POOLED">

在这里插入图片描述

3.3 POOLED的一些配置

在这里插入图片描述

4.properties

jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=Wgf720130601

mybatis-config.xml

<?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>
<!--    <properties>-->
<!--        <property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!--        <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>-->
<!--        <property name="username" value="root"/>-->
<!--        <property name="password" value="Wgf720130601"/>-->
<!--    </properties>-->
    <properties resource="jdbc.properties"/>
    <settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>


    <!--default表示默认环境,当使用mybatis创建sqlSessionFactory的时候,没有指定环境的话,使用这个环境-->
    <environments default="development">
        <environment id="mybatisDB">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
                <property name="poolMaximumActiveConnections" value="10"/>
                <property name="poolTimeToWait" value="2000"/>
                <property name="poolMaximumCheckoutTime" value="10000"/>
                <property name="poolMaximumIdleConnections" value="5"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--执行XxxxMapper.xml文件的路径-->
        <!--resource属性会自动从类的根路径下开始查找资源-->
        <mapper resource="CarMapper.xml"/>
    </mappers>
</configuration>

resource从类路径开始加载

5.mapper

mapper标签⽤来指定SQL映射⽂件的路径,包含多种指定⽅式,这⾥先主要看其中两种:

  • mapper标签⽤来指定SQL映射⽂件的路径,包含多种指定⽅式,这⾥先主要看其中两种:
  • 第⼆种:url,从指定的url位置加载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值