MyBatis全局配置文件详解

目录
  • MyBatis全局配置文件
    • settings 设置
    • typeAliases 类型命名
    • 存在的问题:
    • @Alias("")
      • environments 环境
      • transactionManager 事务管理器
      • JDBC:JdbcTransactionFactory
      • databaseIdProvider 数据库厂商标识
    • DB_VENDOR
      • 变短
      • sql映射文件
  • 总结

MyBatis全局配置文件

MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。文档的

顶层结构如下:

  • configuration 配置
  • properties 属性
  • settings 设置
  • typeAliases 类型命名
  • typeHandlers 类型处理器
  • objectFactory 对象工厂
  • plugins 插件
  • environments 环境
  • environment 环境变量
  • transactionManager 事务管理器
  • dataSource 数据源
  • databaseIdProvider 数据库厂商标识
  • mappers 映射器

properties 属性

mybatis 可以使用properties来引入外部properties配置文件的内容

resource:引入类路径下的资源

url:引入网络路径或者磁盘路径下的资源

<properties resource="dbconfig.properties"></properties>

如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:

  • 在 properties 元素体内指定的属性首先被读取。
  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。 – 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

settings 设置

这是 MyBatis 中极为重要的调整设置,它们会改变MyBatis 的运行时行为。

setting包含很多重要的设置项

setting:用来设置每一个设置项

name:设置项名

value:设置项的取值

mapUnderscoreToCamelCase:驼峰命名 last_name -> lastName

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

typeAliases 类型命名

typeAliases:可以批量设置别名这个包下的每一个类

别名不区分大小写

创建一个默认的别名,就是简单类名小写

typeAlias:为某个java类型起别名

type:指定要起别名的类型全类名;默认别名就是类名小写:employee

alias:指定新的别名

package:为某个包下的所有类批量起别名

name:指定包名(为当前包下以及下面所有的后代包的每一个类都起一个默认的别名(类名小写))

存在的问题:

假设bean包下有一个类Employee,同时在bean包下有一个子包也有一个类叫Employee,此时这两个包的类名就会冲突,因此还可以使用注解的放上为类创建别名

@Alias("")

public class Employee{}

值得注意的是,MyBatis已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,我们在起别名的时候千万不要占用已有的别名。

environments 环境

mybatis可以配置多种环境 default指定使用某种环境,可以达到快速切换

environments:配置一个具体的环境信息;必须有两个标签,id代表当前环境的唯一标识

transactionManager 事务管理器

type:事务管理器的类型 [JDBC(使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围。)|MANAGED(不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE应用服务器的上下文))]

JDBC:JdbcTransactionFactory

自定义事务管理器 实现TransactionFactory接口即可

dataSource 数据源

type:数据源的类型 [UNPOOLED(不使用连接池)|POOLED(使用连接池)|JNDI(在EJB 或应用服务器这类容器中查找指定的数据源)]

自定义数据源 实现DataSourceFactory接口

实际开发中我们使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置

databaseIdProvider 数据库厂商标识

databaseIdProvider: 可以根据不同的数据库厂商执行不同的语句。

type:数据库类型 DB_VENDOR

作用就是得到数据库厂商标识(驱动自带的),mybatis就能根据数据库厂商标识来执行不同的sql

MYSQL Oracle SQL Server

value:为标识起一个别名,方便SQL语句使用databaseId属性引用

DB_VENDOR

会通过 DatabaseMetaData#getDatabaseProductName() 返回的字符串进行设置。由于通常情况下这个字符串都非常长而且相同产品的不同版本会返回不同的值,所以最好通过设置属性别名来使其

变短

MyBatis匹配规则如下:

  • 如果没有配置databaseIdProvider标签,那么databaseId=null
  • 如果配置了databaseIdProvider标签,使用标签配置的name去匹配数据库信息,匹配上设置databaseId=配置指定的值,否则依旧为null
  • 如果databaseId不为null,他只会找到配置databaseId的sql语句
  • MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库databaseId 属性的所有语句。如果同时找到带有 databaseId 和不带databaseId 的相同语句,则后者会被舍弃。

mappers 映射器

mapper:注册一个sql映射

注册配置文件

resource:引用类路径下的sql映射文件

url:用网路路径下的或者磁盘路径下的sql映射文件

注册接口

class:引应用接口

  • 接口映射文件,映射文件名必须和接口同名,并且放在同一个目录下
  • 没有sql映射文件,所有的sql利用注解写在接口上

注解写在接口上

推荐:比较重要和复杂额Dao接口写sql映射文件,不重要的简单的为了开发快速可以使用注解

package:批量注册

sql映射文件

namespace:名称空间;指定为接口的全类名

id:唯一标识

resultType:返回值类型

#{id}:从传递过来的参数中取出id值

<?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="school.xauat.mybatis.dao.EmployeeMapper">
    <select id="getEmpById" resultType="employee" >
        select * from tbl_employee where id = #{id}
    </select>
    <select id="getEmpById" resultType="employee" databaseId="mysql">
        select * from tbl_employee where id = #{id}
    </select>
    <select id="getEmpById" resultType="employee" databaseId="oracle">
        select * from tbl_employee where id = #{id}
    </select>
</mapper>

总结

1、接口是编程

原生: Dao -----> DaoImpl

Mybatis: Mapper -----> xxMapper.xml

2、SqlSession代表和数据库的一次会话,用完必须关闭

3、SqlSession和connection一样,都是非线程安全的。每次使用都应该获取新的对象

4、mapper接口没有实现类,但是Mybatis会为这个接口生成一个代理对象(将接口和xml进行绑定)

EmployeeMapper empMapper = SqlSession.getMapper(Employee.class);

5、两个重要的配置文件

mybatis的全局配置文件;包含数据库连接池信息,事务管理器信息,系统运行信息

sql映射文件:保存了每一个SQL语句的映射信息

将sql抽取出来

(0)

相关推荐

  • 详解Mybatis是如何解析配置文件的

    缘起 经过前面三章的入门,我们大概了解了Mybatis的主线逻辑是什么样子的,在本章中,我们将正式进入Mybatis的源码海洋. Mybatis是如何解析xml的 构建Configuration 我们调用new SqlSessionFactoryBuilder().build()方法的最终目的就是构建 Configuration对象,那么Configuration何许人也?Configuration对象是一个配置管家, Configuration对象之中维护着所有的配置信息. Configura

  • MyBatis 中 SqlMapConfig 配置文件详解

    0x00:文件介绍 在 WEB 工程中,对于 MyBatis 最核心的全局配置文件是 SqlMapConfig.xml 文件,其中包含了数据库的连接配置信息.Mapper 映射文件的加载路径.全局参数.类型别名等. 0x01:配置项详解 configuration:包裹所有配置标签,是整个配置文件的顶级标签. properties:属性,该标签可以引入外部配置的属性,也可以自己配置.该配置标签所在的同一个配置文件中的其他配置均可引用此配置中的属性. setting:全局配置参数,用来配置一些改变

  • 详解Mybatis核心配置文件

    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"

  • Mybatis主配置文件的properties标签详解

    我们配置MYSQL的连接池时可以直接写,也可以从外部导入配置文件. 1.直接在dataSource中写数据库基本信息 <dataSource type="POOLED"> <!-- 配置连接数据库的4个基本信息 --> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value=&

  • Spring整合SpringMVC + Mybatis基础框架的配置文件详解

    前言 新建一个普通的Maven项目 基本目录结构 ├── src # │ ├── main # │ │ └── java # java代码目录 │ │ └── resources # 配置文件目录, 存放下面Spring配置文件 │ ├── test # 单元测试目录 ├── web # web目录 │ └── WEB-INF # web.xml 配置文件目录 1. Mybatis层编写 1.在 resources 目录下新建数据库配置文件 database.properties jdbc.dr

  • MyBatis全局配置文件详解

    目录 MyBatis全局配置文件 settings 设置 typeAliases 类型命名 存在的问题: @Alias("") environments 环境 transactionManager 事务管理器 JDBC:JdbcTransactionFactory databaseIdProvider 数据库厂商标识 DB_VENDOR 变短 sql映射文件 总结 MyBatis全局配置文件 MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性

  • Mybatis Generator最完美配置文件详解(完整版)

    最近没做项目,重新整理了一个最完整的Mybatis Generator(简称MBG)的最完整配置文件,带详解,再也不用去看EN的User Guide了: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

  • Java Mybatis框架Dao层的实现与映射文件以及核心配置文件详解分析

    目录 Mybatis的Dao层实现 传统开发方式 代理开发方式 MyBatis映射文件深入 动态sql语句 动态SQL之<if> 动态SQL之<foreach> SQL片段抽取 总结 Mybatis核心配置文件深入 typeHandlers标签 plugins标签 总结 Mybatis的Dao层实现 传统开发方式 1.编写UserDao接口 public interface UserMapper { public List<User> findAll() throws

  • Mybatis查询延迟加载详解及实例

    Mybatis查询延迟加载详解及实例 1.1     启用延迟加载 Mybatis的延迟加载是针对嵌套查询而言的,是指在进行查询的时候先只查询最外层的SQL,对于内层SQL将在需要使用的时候才查询出来.Mybatis的延迟加载默认是关闭的,即默认是一次就将所有的嵌套SQL一并查了将对象所有的信息都查询出来.开启延迟加载有两种方式. 第一种是在对应的<collection>或<association>标签上指定fetchType属性值为"lazy".如下示例中我们

  • Mybatis-Plus和Mybatis的区别详解

    原文:https://blog.csdn.net/qq_34508530/article/details/88943858 . 区别一 如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂. 通俗来讲-- MyBatis:一种操作数据库的框架,提供一种Mapper类,支持让你用java代码进行增删改查的数据库操作,省去了每次都要手写sql语句的麻烦.但是!有一个前提,你得先在xml中写好sql语句,是不是很麻烦?于是有下面的↓ Mybatis Generat

  • springboot与mybatis整合实例详解(完美融合)

    简介 从 Spring Boot 项目名称中的 Boot 可以看出来,Spring Boot 的作用在于创建和启动新的基于 Spring 框架的项目.它的目的是帮助开发人员很容易的创建出独立运行和产品级别的基于 Spring 框架的应用.Spring Boot 会选择最适合的 Spring 子项目和第三方开源库进行整合.大部分 Spring Boot 应用只需要非常少的配置就可以快速运行起来. Spring Boot 包含的特性如下: 创建可以独立运行的 Spring 应用. 直接嵌入 Tomc

  • SpringMvc+Mybatis+Pagehelper分页详解

    最近公司需要做一个告警页面的功能,需要分页,查了很多资料发现PageHelper比较合适 故写一篇从零开始的PageHelper使用的教程,也记录下忙活一天的东西 1.首先需要在项目中添加PageHelper的依赖,这里我用的Maven添加 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>

  • Nginx服务器Nginx.com配置文件详解

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; #工作模式及连接数上限 events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但

  • Mysql my.ini 配置文件详解

    Mysql my.ini 配置文件详解 #BEGIN CONFIG INFO #DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大 #TYPE: SYSTEM #END CONFIG INFO # # 此mysql配置文件例子针对4G内存 # 主要使用INNODB #处理复杂队列并且连接数量较少的mysql服务器 # # 将此文件复制到/etc/my.cnf 作为全局设置, # mysql-data-dir/my.cnf 作为服务器指定设置 # (@loc

随机推荐