notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • Java开发

    • My

    • Posts

    • Java SE

    • Java 并发编程

    • JVM

    • JDBC

    • Java Web

    • Spring 与 SpringMVC

    • Spring Boot

    • Spring Cloud

    • Spring Security

    • Netty

    • MyBatis

      • 动力节点课程-MyBatis

        • MyBatis 概述与入门
        • 使用 MyBatis 完成 CRUD
        • MyBatis 核心配置文件详解
          • 1. MyBatis 核心配置文件
            • 1)configuration
            • 2)environments
            • 3)environment
            • 4)transactionManager
            • 5)dataSource
            • 6)properties
            • 7)mapper
        • MVC 中使用 MyBatis
        • MyBatis 使用小技巧
        • 参数处理、查询返回与动态 SQL
        • MyBatis 的高级映射和缓存机制
  • Python开发

  • Golang开发

  • Git

  • 软件设计与架构

  • 大数据与分布式系统

  • 区块链

  • Nginx

  • 开发
  • Java开发
  • MyBatis
  • 动力节点课程-MyBatis
yubin
2023-08-05
目录

MyBatis 核心配置文件详解

# 1. MyBatis 核心配置文件

一个 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>
    <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"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="CarMapper.xml"/>
        <mapper resource="CarMapper2.xml"/>
    </mappers>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

DOCTYPE 后面跟的就是根标签的名字,这里就是 configuration。

第四行的 dtd 文件是对这个 XML 文件的格式规范约束,限制一个标签能有哪些子标签之类的信息

# 1)configuration

configuration:根标签,表示配置信息。

# 2)environments

environments:环境(多个),表示 MyBatis 可以配置多个数据源

  • default 属性:表示默认使用哪个环境,填的是某一个 environment 的 id

# 3)environment

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

  • id:给当前环境一个唯一标识
  • SqlSessionFactoryBuilder 在生成 factory 时,可以在指定 xml 配置文件的同时指定一个 environment

# 4)transactionManager

transactionManager:配置事务管理器,指定 MyBatis 具体使用什么方式去管理事务

  • type 属性有两个值:
    • JDBC:使用原生的 JDBC 代码来管理事务,此时 MyBatis 会实例化一个 JdbcTransaction 对象
    • MANAGED:MyBatis 不再负责事务的管理,将事务管理交给其他的 JavaEE 容器来管理,例如 Spring,此时 MyBatis 会实例化一个 ManagedTransaction 对象

# 5)dataSource

dataSource,数据源,为程序提供 Connection 对象。

DataSource 实际上是 JDK 的一套规范,位于 javax.sql.DataSource 中,凡是给程序提供 Connection 对象的都叫作数据源。

假如你写了一个东西,实现了 DataSource 这个规范,那么也可以对接到 MyBatis 中。

常见的数据库连接池有哪些:

  • Alibaba 的 Druid
  • C3P0
  • HikariCP
  • ...

该标签的 type 属性用来指定数据源的类型,也就是指定具体使用什么方式来获取 Connection 对象。type 属性有三个值:UNPOOLED | POOLED | JNDI:

  • UNPOOLED:不使用数据库连接池技术,每次请求都会创建新的 Connection 对象
  • POOLED:使用 MyBatis 自己实现的数据库连接池
  • JNDI:集成其他第三方的数据库连接池

填入不同的 type 值后,字标签需要配置的属性不同,这部分可以参考官方文档。

建议开启连接池,连接池的优点:

  1. 每一次获取连接都是从 pool 中拿,效率高
  2. 因为每一次只能从 pool 中拿,所以连接对象的创建数量是可控的

# 6)properties

MyBatis 借助这个标签使得可以让数据库的连接信息单独写到一个属性资源文件中。

具体做法可参考相关文档。

# 7)mapper

mapper 标签用来指定SQL映射文件的路径,包含多种指定方式,

  1. resource:从类的根路径下开始加载(更常用)
  2. url:从指定的 URL 位置加载
<mappers>
  <mapper resource="CarMapper.xml"/>
</mappers>
1
2
3
编辑 (opens new window)
上次更新: 2023/08/09, 13:08:47
使用 MyBatis 完成 CRUD
MVC 中使用 MyBatis

← 使用 MyBatis 完成 CRUD MVC 中使用 MyBatis→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×