使用思维导图做出Mybatis核心配置文件中各层及结构以及常用标签的意义和详细作用.

news2024/11/28 4:47:14

 

一、配置文件概述
Mybatis 配置文件两大类:1.Mybatis 主配置文件;2.Mybatis 的 mapper 文件

  • Mybatis 主配置文件: 提供 Mybatis 全局设置的。包含的内容、日志、数据源、mapper 文件位置等信息。
  • Mybatis 的 mapper 文件: 写 sql 语句的。一个表/Mapper接口一个 mapper 文件。
     

二、核心配置文件
核心配置文件 mybatis-config.xml,配置文件会影响 mybatis 的行为设置和属性信息

MyBatis 配置文档的顶层结构如下:

configuration(配置)
properties(属性)
property(属性信息)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
​dataSource(数据源)
property(属性信息)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
在配置文件里面添加这些配置,要按顺序来添加,不然会报错

1. properties(属性)

properties(属性)是用来加载配置文件或声明属性信息的。

2. settings(设置)
在 MyBatis 中 settings 是最复杂的配置,它能深刻影响 MyBatis 底层的运行,但是在大部分情况下使用默认值便可以运行,所以在大部分情况下不需要大量配置它,只需要修改一些常用的规则即可,比如自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器(Executor)类型等。
 

3. typeAliases(类型别名)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写

在Mybatis核心配置文件中配置(将Java类的全路径替换成一个别名,在xml使用):

    <typeAliases>
        <typeAlias alias="User" type="com.xxx.domain.User"/>
    </typeAliases>

也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,使用 Bean 的首字母小写的非限定类名来作为它的别名:

    <typeAliases>
        <package name="com.xxx.domain"/>
    </typeAliases>

4. typeHandlers(类型处理器)
由于Java 类型和数据库的 JDBC 类型不是一一对应的(比如 String 与 varchar), 所以我们把 Java 对象转换为数据库的值,和把数据库的值转换成 Java 对象,需要经过 一定的转换,这两个方向的转换就要用到 TypeHandler。我们平时没有做任何关于 TypeHandler 的配置,为什么实体类对象里面的 String 属性,可以保存成数据库里面的 varchar 字段或者保存成 char 字段呢,这是因为 MyBatis 中已经内置了很多 TypeHandler。

typeHandlers(类型处理器)标签是用来重写或者自定义类型处理器的。

5. objectFactory(对象工厂)
当我们把数据库返回的结果集转换为实体类的时候,需要创建对象的实例,由于我 们不知道需要处理的类型是什么,有哪些属性,所以不能用 new 的方式去创建。在 MyBatis 里面,它提供了一个工厂类的接口,叫做 ObjectFactory,专门用来创建对象的实例。

typeHandlers(类型处理器)标签是用来重写或者自定义类型对象工厂的。

6. plugins(插件)
MyBatis 可以使用第三方的插件来对功能进行扩展,比如分页助手 PageHelper 是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据。

7. environments(环境配置)
mybatis 可以配置多套环境使用,将 SQL 映射到不同的数据库中。比如开发、测试和生产环境的数据库不同,需要不同的配置。但是,尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。有多少个环境,就需要多少个 SqlSessionFactory 实例。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/607647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 中的 gdb 调试方法和技巧(有截图超详细)

一、 背景 1. 程序的发布方式有两种&#xff0c;debug模式和release模式 2. Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 3. 要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候&#xff0c;加上 -g 选项 如下图&#xff1a; 不加 -g 默认是 relea…

【Java】快速排序

文章目录 一、什么是快速排序二、基准元素的选择1、选择第一个元素2、随机选择 三、元素的交换1、双边循环法2、单边循环法 一、什么是快速排序 快速排序是由冒泡排序演变而来&#xff0c;比冒泡排序更快的排序算法。之所以快&#xff0c;是因为快速排序用了分治法。 相同的是…

基于均值方差最优化资产配置的模型特性

摘要及声明 1&#xff1a;本文主要利用实际数据进行检验&#xff0c;从定量角度分析均值方差最优化的特性&#xff1b; 2&#xff1a;本文主要为理念的讲解&#xff0c;模型也是笔者自建&#xff0c;文中假设与观点是基于笔者对模型及数据的一孔之见&#xff0c;若有不同见解…

Linux最小安装网络配置、jdk安装以及虚拟机克隆的操作(超详细过程)

一、最小安装配置网络 1、配置文件&#xff1a; 进入“/etc/sysconfig/network-scripts”目录&#xff0c;查看当前目录下的“ifcfg-ens33”文件 对“ens33”文件进行配置 2、重启网络&#xff1a; 使用“systemctl restart network”命令即可 3、ping网络&#xff0c;如果…

【Proteus仿真】51单片机+步进电机驱动

【Proteus仿真】51单片机步进电机驱动 &#x1f516;Proteus仿真基础实验-步进电机驱动&#x1f33f;Proteus8.12平台 &#x1f4cb;步进电机简介 步进电机是一种将电脉冲转换为角位移的开环控制元步进电机。一般地&#xff0c;当步进驱动器接收到脉冲信号时&#xff0c;它将根…

企业邮箱购买指南:分享如何购买适合企业的企业邮箱

如果你想为你的公司设立一个新的公司邮箱帐户&#xff0c;有几种不同的选择可供选择。根据公司的规模和需求&#xff0c;你可以从邮箱托管公司购买一个邮箱地址&#xff0c;购买域名并创建一个自定义邮箱地址&#xff0c;或者与第三方提供商合作。无论您选择哪种方法&#xff0…

服务(第三十四篇)ceph-分布式存储

什么是ceph&#xff1f; ceph 是一种统一的分布式文件系统&#xff0c;具有优秀的性能、高可用性和可扩展性。ceph 的统一体现在可以提供文件系统、块存储和对象存储&#xff0c;分布式体现在可以动态扩展。在国内一些公司的云环境中&#xff0c;通常会采用 ceph 作为 openstac…

机器学习强基计划10-2:详细推导串行集成AdaBoost算法(附Python实现)

目录 0 写在前面1 串行集成学习2 AdaBoost原理推导3 Python实现3.1 算法流程3.2 核心代码3.3 可视化 0 写在前面 机器学习强基计划聚焦深度和广度&#xff0c;加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&#xff1b;“广”在分析多个机器学习模…

chatgpt赋能python:Python数据处理之去除NaN值

Python 数据处理之去除 NaN 值 作为数据分析和处理领域中的一种高效工具&#xff0c;Python 在数据清理方面表现优异。而 NaN 是数据处理中常见的问题之一&#xff0c;过多的 NaN 值常常会导致分析结果不准确或无法得出结论&#xff0c;因此 Python 提供了多种方法去除 NaN 值…

chatgpt赋能python:Python反转数字的方法

Python反转数字的方法 Python作为一种高级编程语言&#xff0c;拥有着丰富的数学计算、数组处理及字符串操作等功能。在实际开发中&#xff0c;需要进行反转数字的操作时&#xff0c;Python提供了多种方法来完成此项任务。 用Python反转数字 反转数字是指将一个数字从后往前…

SQL语句之DML语言

说明&#xff1a;DML&#xff08;Data Manipulation Language&#xff09;&#xff0c;用来对数据库中表的数据记录进行增、删、改操作。注意&#xff0c;没有查询&#xff0c;数据的查询单独拎出来成DQL&#xff08;Data Query Language&#xff0c;数据查询语言&#xff09;&…

吴恩达 ChatGPT Prompt Engineering for Developers 系列课程笔记--03 Iterative

03 Iterative 本节主要通过代码来讲解如何在迭代中找到合适的prompt。对于初学者来说&#xff0c;第一次使用Prompt不一定得到语气的结果&#xff0c;开发者可以采用下述流程进行迭代优化&#xff1a; 给出清晰、具体的指令如果结果不正确&#xff0c;分析原因调整prompt重复…

ClickHouse的join优化

概要&#xff1a; ClickHouse 最为擅长的领域是一个大宽表来进行查询&#xff0c;多表 JOIN 时Clickhouse 性能表现不佳。 CK执行模式 第一阶段&#xff0c;Coordinator 收到查询后将请求发送给对应的 worker 节点&#xff1b;第二阶段&#xff0c;Coordinator 收到各个 work…

Java内存模型和常见的内存溢出类型及解决方案

Java内存模型与常见的内存溢出 一. Java 运行过程和内存分配1 Java的平台无关性2 Java内存模型2.1Java内存模型图 3 内存结构详解3.1 元空间&#xff08;MetaSpace&#xff09;3.2 堆区&#xff08;Heap&#xff09;新生代老年代 3.3 虚拟机栈&#xff08;VM Stack&#xff09;…

Linux :: vim 编辑器:详解:光标移动定位内容,行间:快速定位至文本:开头 / 结尾;行内:词间跳跃

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 前言&#x…

Asana替代方案推荐:盘点2023年8种优质的免费和付费替代工具

Asana是一个项目管理和团队合作软件平台&#xff0c;自2008年成立以来&#xff0c;一直在彻底改变团队合作的方式。Asana以其直观的用户界面而闻名&#xff0c;是项目经理和团队领导的热门选择。然而在快节奏的项目管理世界中&#xff0c;技术发展很快。因此&#xff0c;当涉及…

chatgpt赋能python:Python取余方法介绍

Python取余方法介绍 在Python编程中&#xff0c;取余&#xff08;也称为求模运算或取模运算&#xff09;是计算机程序经常使用的一种基本算术运算。Python提供了两种方法来执行取余运算&#xff1a;使用百分号符号&#xff08;%&#xff09;和divmod()函数。 使用百分号符号&…

揭秘HTTP代理的神奇力量:让你的系统突破内网限制

大家好&#xff0c;我是你们的小米&#xff01;今天&#xff0c;我要和大家聊聊一个技术问题&#xff0c;那就是关于"http代理"的使用。昨日&#xff0c;我刚刚午休睡醒&#xff0c;项目经理杰哥叫我关注下其中一个项目的部署进展情况。而就在这时&#xff0c;客户侧…

15天学会EasyX 第2天:EasyX里的设备坐标与打开关闭绘图窗口

本文为山城瑞宝创作&#xff0c;转载请标注版权&#xff01; 本文里的函数使用都不需要先写明原型&#xff0c;原型就在其对应的库里&#xff08;直接用&#xff09; 目录 1. 设备及其坐标 2. 如何打开与关闭绘图窗口 2.1. initgraph 2.1.1. 没有flag的代码示例 2.1.2. 使用了…

会声会影2023旗舰中文试用版下载安装教程

会声会影2023版(Corel VideoStudio)是一款专业视频制作软件及视频剪辑软件,可以剪辑合并视频,制作视频,屏幕录制,光盘制作,视频后期编辑,添加特效,字幕和配音等操作,界面美观,素材丰富,操作简洁而! 会声会影有多轨道式编辑功能&#xff0c;可以独立处理视频、图片、音频等素材&…