一文彻底搞懂Mybatis系列(四)之mybatis核心配置文件详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 一文彻底搞懂Mybatis系列(四)之mybatis核心配置文件详解

一、核心配置文件之多环境配置

使用environment 标签,进行多环境的配置 ,具体配置如下:
<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/powernode?useUnicode=true&amp;characterEncoding=utf-8"/>
                <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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatisDB?useUnicode=true&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/CarMapper.xml"/>
        <mapper resource="com/UserMapper.xml"/>
    </mappers>
</configuration>
配置说明:
1、<environments default="development"> 表示默认的环境配置,通过id来指定
2、一个环境下对应一个SqlSessionFactory 对象

核心测试代码演示

1、使用默认的环境
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
 SqlSessionFactory factory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
指定mybatis的环境
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"),"development");

二、核心配置文件之事务管理器

transactionManager标签:

作用:配置事务管理器。指定mybatis具体使用什么方式去管理事务。

type属性有两个值:

第一个:JDBC:使用原生的JDBC代码来管理事务。
conn.setAutoCommit(false);
·...
conn.commit();
第二个:MANAGED:mybatis不再负责事务的管理,将事务管理交给其它的JEE(JavaEE)容器来管理。例如:spring了.大小写无所谓。不缺分大小写。但是不能写其他值。只能是二选一:

jdbc、managed

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

该接口下有两个实现类:
JdbcTransdction ManagedTransaction
如果type="JDBC",那么底层会实例化JdbcTransaction对象。
如果type="MANAGED",那么底层会实例化ManagedTransaction

三、核心配置文件之数据源配置

dataSource配置:

1.dataSource被称为数据源。

2.dataSource作用是什么?

为程序提供Connection对象。(但凡是给程序提供Connection对象的,都叫做数据源。)

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

4.我们自己也可以编写数据源组件,只要实现javax.sql.DataSource接口就行了

实现接口当中所有的方法。

这样就有了自己的数据源比如你可以写一个属于自己的数据库连接池(数据库连接池是提供连接对象的,所以数据库连接池就是一个数据源)。

5.常见的数据源组件有哪些呢【常见的数据库连接池有哪些呢】?

阿里巴巴的德鲁伊连接池:druid、с3pθ 、dbcp

6.type属性用来指定数据源的类型

就是指定具体使用什么方式来获取Connection对象:

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

type=“[UNPOOLED|POOLED|JNDI]”

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

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

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

测试UNPOOLED和POOLED的区别
1、如果配置了UNPOOLED,表示不使用连接池
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="UNPOOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                ......
</configuration>
@Test
    public void testMybatis1() throws IOException {
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //使用默认的环境
        SqlSessionFactory factory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
        //指定mybatis的环境
        SqlSession sqlSession = factory.openSession();
        Car car = sqlSession.selectOne("jskdlf.selectById",12);
        System.out.println(car.toString());
        sqlSession.commit();
        sqlSession.close();
        SqlSession sqlSession2 = factory.openSession();
        Car car1 = sqlSession2.selectOne("aaaaaddd.selectById",12);
        System.out.println(car1.toString());
        sqlSession2.commit();
        sqlSession2.close();
    }
获得的连接对象,是不一样的,每次都获取到一个新创建的连接对象,
这样会很消耗资源

2、如果配置了POOLED,表示使用mybatis默认的连接池
• 1
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                ......
</configuration>
运行结果如下,我们发现都是同一个连接对象

总结连接池优点:

1.每一次获取连接都从池中拿,效率高。
2.因为每一次只能从池中拿,所以连接对象的创建数量是可控的。
假设最多的连接数量是:10个最多空闲的数量是:5个。
假设目前已经空闲5个了。马上第6个要空闲了。
假设第6个空闲下来了。此时连接池为了保证最多空闲的数量5个,
会真正关闭多余的空闲的连接对象。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
XML Java 数据库连接
mybatis环境搭建步骤(含配置文件代码)
mybatis环境搭建步骤(含配置文件代码)
18 1
|
8天前
|
SQL Java 数据库连接
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
|
8天前
|
SQL Java 数据库连接
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
【1月更文挑战第3天】 一、核心配置文件详解 二、默认的类型别名 三、MyBatis的增删改查 四、MyBatis获取参数值的两种方式 1、单个字面量类型的参数 2、多个字面量类型的参数 3、map集合类型的参数 4、实体类类型的参数 5、使用@Param标识参数
63 2
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
|
8月前
|
XML Java 数据库连接
(精)SSM框架整合的配置文件(spring+spring MVC+mybatis)
(精)SSM框架整合的配置文件(spring+spring MVC+mybatis)
59 0
|
8天前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
211 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
8天前
|
缓存 Java 数据库连接
【MyBatis】主配置文件
【MyBatis】主配置文件
32 0
|
8天前
|
XML Java 数据库连接
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
91 0
|
8天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
21 0
|
8天前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
20 1
|
8天前
|
Java Spring
ssm(Spring+Spring mvc+mybatis)Spring配置文件——applicationContext.xml
ssm(Spring+Spring mvc+mybatis)Spring配置文件——applicationContext.xml
11 0