当前位置: 首页 > news >正文

Mybatis的核心配置文件

MyBatis的全局配置文件mybatis-config.xml,配置内容如下:

  • properties(属性)
  • settings(全局配置参数)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境集合属性对象)
    • environment(环境子属性对象)
      • transactionManager(事务管理)
      • dataSource(数据源)
  • mappers(映射器)

properties(属性)标签

作用:加载propertis配置文件

配置了此标签后,在mybatis-config.xml中就不需要对数据库连接参数硬编码了。 

应用:①将连接数据库的信息配置到一个单独的属性文件db.properties中(假设在类的根路径下创建db.properties文件),配置如下:

db.propertiesjdbc.mysql.driver=com.mysql.jdbc.Driver
jdbc.mysql.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8&useSSL=false
jdbc.mysql.username=root
jdbc.mysql.password=root将来用${}通过key把对应的值从这个文件中取出来

②再在mybatis的核心配置文件中 用properties标签 加载属性文件 ,再用${key}通过key把属性文件中对应的值取出来用即可:

  • properties标签的两个属性,在mapper标签中也有:
    • resource:从类的根路径下开始加载资源。【常用的。】
    • url:从指定的url加载资源,假设文件放在d:/jdbc.properties,这个url可以写成:file:///d:/jdbc.properties。注意是三个斜杠哦。
mybatis-config4.xml<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--加载属性文件--><properties resource="jdbc.properties"/><environments default="dev"><environment id="dev"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><mapper resource="CarMapper.xml"/></mappers>
</configuration>

注意:如果不知道mybatis-config.xml文件中标签的编写顺序的话,可以有两种方式知道它的顺序:

  • 第一种方式:查看dtd约束文件。

  • 第二种方式:通过idea的报错提示信息。【一般采用这种方式】

settings全局配置参数

MyBatis框架在运行时可以调整一些运行参数,比如:开启二级缓存、开启延迟加载。

可配置参数如下:

常用的就是开启下划线与驼峰命名的转换:

  • 概念:使数据库列名 自动映射成 java类的属性名

  • 使用这种方式的前提是:属性名遵循Java的命名规范,数据库表列名要遵循SQL的命名规范。

    • Java命名规范:首字母小写,后面每个单词首字母大写,遵循驼峰命名方式。

    • SQL命名规范:全部小写,单词之间采用下划线分割。

  • 比如以下的对应关系:

实体类中的属性名数据库表的列名
carNumcar_num
carTypecar_type
produceTimeproduce_time
  • 如何开启这个功能?

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

typeAliases(类型别名)标签

在mapper.xml映射文件中,会定义很多的statement。statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。如果在指定类型时输入类型的全限定类名,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。

MyBatis默认支持别名

自定义别名

使用 typeAliases标签 来给类起别名,包括两种方式:

第一种方式:嵌套typeAlias标签

:为单个类型起别名

<typeAliases><typeAlias type="com.powernode.mybatis.pojo.Car" alias="Car"/>
</typeAliases>
  • typeAliases标签可以嵌套多个typeAlias标签

  • typeAlias标签的属性:

    • type属性:要起别名的类的全限定类名

    • alias属性:别名。

      • alias属性可以缺省,起的别名就是该类的类名,如上述的就是Car(不区分大小写)

第二种方式:嵌套package标签

:批量给类型起别名

<typeAliases><package name="com.powernode.mybatis.pojo"/>
</typeAliases>
  • package单标签的name属性:指定给哪个包下的所有类自动起别名,自动起的别名就是:该类的类名,首字母大小均可。
  • package也可以配置多个的。

总结

  • 所有的别名都不区分大小写

  • namespace不能使用别名机制

typeHandlers类型处理器

MyBatis中通过typeHandlers完成JDBC类型和Java类型的转换,MyBatis自带的类型处理器基本上满足日常需求,不需要单独定义。

作用:将数据库中列的类型 自动转化为 java中的类型

MyBatis支持类型处理器:

mappers映射器标签

作用:在MyBatis核心配置文件中加载SQL映射文件。

SQL映射文件的配置方式包括四种:

  • resource:从类路径下加载

  • url:从指定的全限定资源路径中加载

  • class:使用映射器接口实现类的完全限定类名

  • package:将包内的映射器接口实现全部注册为映射器

mapper标签的resource属性

这种方式从类路径下开始加载资源,要求配置文件必须放在resources目录下或其子目录下。

<mappers><mapper resource="org/mybatis/builder/AuthorMapper.xml"/><mapper resource="org/mybatis/builder/BlogMapper.xml"/><mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

mapper标签的url属性

这种方式使用配置文件的绝对路径来加载资源,对SQL映射文件的存放位置没有要求。

<mappers><mapper url="file:///var/mappers/AuthorMapper.xml"/><mapper url="file:///var/mappers/BlogMapper.xml"/><mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>

mapper标签的class属性

<!-- class属性:配置mapper接口的全限定名,通过Java中的Mapper接口来加载映射文件 -->
<mappers><mapper class="org.mybatis.builder.AuthorMapper"/><mapper class="org.mybatis.builder.BlogMapper"/><mapper class="org.mybatis.builder.PostMapper"/>
</mappers>

使用这种方式必须满足以下前提:

  • SQL映射文件和mapper接口需存放在同一个目录下。因为mybatis会自动去Mapper接口所在的目录下去找SQL映射文件

  • SQL映射文件的名字和mapper接口名一致。

  • 必须使用mapper代理的开发方式。

注意:同一个目录是指编译之后的目录,并非开发时的目录。

将CarMapper.xml文件移动到和mapper接口同一个目录下:

  • 在resources目录下新建一个和mapper接口包名一样的多级目录:com/powernode/mybatis/mapper【这里千万要注意:不能这样新建 com.powernode.mybatis.dao

  • 将CarMapper.xml文件移动到mapper目录下

mappers标签嵌套package标签

如果class较多,使用 package标签的方式 批量加载SQL映射文件

此种配置使mapper扫描指定包,并在此包下获取所有的接口以及与接口名称相同mapper文件,
并加载;

<mappers>
<!-- name属性:存放Mapper接口与mapper.xml文件的包名 --><package name="com.powernode.mybatis.mapper"/>
</mappers>

要求:与mapper接口加载单个映射文件(class方式)一致。

Mybatis配置文件的标签顺序

Mybatis配置文件中各标签的位置顺序如下:

properties?,
settings?,
typeAliases?,
typeHandlers?,
objectFactory?,
objectWrapperFactory?,
reflectorFactory?,
plugins?,
environments?,
databaseIdProvider?,
mappers?
具体可以参考 http://mybatis.org/dtd/mybatis-3-config.dtd 文件。

 

相关文章:

Mybatis的核心配置文件

MyBatis的全局配置文件mybatis-config.xml&#xff0c;配置内容如下&#xff1a; properties&#xff08;属性&#xff09;settings&#xff08;全局配置参数&#xff09;typeAliases&#xff08;类型别名&#xff09;typeHandlers&#xff08;类型处理器&#xff09;objectFa…...

四川易点慧电子商务抖音小店:安全可靠,购物新选择

随着互联网的飞速发展&#xff0c;电子商务已成为人们日常生活中不可或缺的一部分。在众多电商平台中&#xff0c;四川易点慧电子商务抖音小店以其安全可靠、服务优质的特点&#xff0c;逐渐赢得了消费者的信赖和好评。 一、平台背景实力雄厚 四川易点慧电子商务有限公司是一家…...

基于数据沙箱与LLM用例自愈的UI自动化测试平台

本期作者 项目参与人员&#xff1a; 顾伊凡、陈钰广、张又中、杨雨浩、樊执政、熊梦园、何璇、谭楠 UI自动化测试能够在一定程度上确保产品质量&#xff0c;尤其在降本提效的大背景下&#xff0c;其重要性愈发凸显。理想情况下&#xff0c;UI自动化测试不仅能够能帮我们规避不少…...

面试算法-117-组合总和 III

题目 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出: [[1,2,4…...

邮件接口与第三方平台的集成的方式有哪些?

邮件接口如何实现高效通信&#xff1f;怎么有效地利用邮件接口&#xff1f; 邮件接口与第三方平台的集成已经成为了企业提升工作效率、优化用户体验的关键环节。那么&#xff0c;邮件接口与第三方平台的集成方式究竟有哪些呢&#xff1f;接下来&#xff0c;AokSend就来探讨一下…...

qrcode插件-生成二维码

安装 yarn add qrcodejs2 --save npm install qrcodejs2 --save 使用 <template><div><div id"qrcodeImg"></div><!-- 创建一个div&#xff0c;并设置id --></div> </template> <script> import QRCode from q…...

基于JavaSpringmvc+myabtis+html的鲜花商城系统设计和实现

基于JavaSpringmvcmyabtishtml的鲜花商城系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…...

[论文笔记] Dual-Channel Span for Aspect Sentiment Triplet Extraction

一种利用句法依赖和词性相关性信息来过滤噪声&#xff08;无关跨度&#xff09;的基于span方法。 会议EMNLP 2023作者Pan Li, Ping Li, Kai Zhang团队Southwest Petroleum University论文地址https://aclanthology.org/2023.emnlp-main.17/代码地址https://github.com/bert-ply…...

【C语言】linux内核pci_enable_device函数和_PCI_NOP宏

pci_enable_device 一、注释 static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) {struct pci_dev *bridge;int err;int i, bars 0;/** 此时电源状态可能是未知的&#xff0c;可能是由于新启动或者设备移除调用。* 因此获取当前的电源状态&…...

网络: 套接字

套接字: 在网络上进行进程间通信 网络字节序与主机字节序的转化 sockaddr sockaddr struct sockaddr {sa_family_t sa_family; // 地址族char sa_data[14]; // 地址数据&#xff0c;具体内容与地址族相关 };sockaddr_in :主要是地址类型, 端口号, IP地址. 基于IPv4编程…...

Day57-Nginx反向代理与负载均衡初步应用

Day57-Nginx反向代理与负载均衡初步应用 1. Nginx代理介绍2. Nginx代理常见模式2.1 正向代理2.2 反向代理2.3 正向与反向代理区别 3. Nginx代理支持协议4. Nginx反向代理场景实践5. lb01安装部署nginx 1. Nginx代理介绍 1&#xff09;在没有代理的情况下&#xff0c;都是客户端…...

【PHP】通过PHP开启/暂停Apache、MySQL或其他服务

目录 一、前言 二、代码 一、前言 有些时候我们需要开启或暂停一些服务&#xff0c;比如说开启Apach或暂停MySQL服务等&#xff0c;最近工作中也开发了这方面的功能&#xff0c;记录下来怎样使用PHP语言来开启或暂停Apache、MySQL服务的运行状态。 这种方法也适用其他服务。…...

JAVA中spring介绍

Spring框架是一个开源的Java平台&#xff0c;它最初由Rod Johnson于2003年创建&#xff0c;目的是简化企业级应用的开发。Spring框架的核心特性包括控制反转&#xff08;IoC&#xff09;、面向切面编程&#xff08;AOP&#xff09;、事务管理、数据访问等。它通过提供一套综合的…...

latex下载与安装

用jupyter导出pdf时&#xff0c;需要用到Tex 1.Tex下载安装 官网 直接git下载 git clone https://github.com/latex3/latex2e.git 或者 清华大学开源软件镜像 双击.bat文件 大概需要1-2小时&#xff0c;如果安装失败&#xff0c;重新进行安装 查看是否安装成功&#xff…...

JavaParser 手动安装和配置

目录 前言 一、安装 Maven 工具 1.1 Maven 软件的下载 1.2 Maven 软件的安装 1.3 Maven 环境变量配置 1.4 通过命令检查 Maven 版本 二、配置 Maven 仓库 2.1 修改仓库目录 2.2 添加国内镜像 三、从 Github 下载 JavaParser 3.1 下载并解压 JavaParser 3.2 从路径打…...

再次度过我的创作纪念日

机缘 写博客的机缘巧合已经在上一篇博客中写到了&#xff0c;至于收获和成就也不一一赘述了。想和大家聊的呢就这最近这一年左右的经历吧 日常 自从2022年开始&#xff0c;入职了一家大型的项目外派公司&#xff0c;名字就不说了。开始了我的保险公司系统的开发工作。工作地点…...

云电脑火爆出圈,如何选择和使用?--腾讯云、ToDesk云电脑、青椒云使用评测和攻略

前言&#xff1a; Hello大家好&#xff0c;我是Dream。在当下&#xff0c;科技的飞速发展已经深入影响着我们的日常生活&#xff0c;特别是随着物联网的兴起和5G网络的普及&#xff0c;云计算作为一个重要的技术概念也逐渐走进了我们的视野。云计算早已不再是一个陌生的名词&am…...

webpack原理之-打包流程热更新HMR

webpack打包流程&#xff1f; 1. 初始化: 启动构建&#xff0c;读取与合并配置参数&#xff0c;加载Plugin&#xff0c;实例化Compiler&#xff1b; 2. 编译: 从 entry出发&#xff0c;针对每个 Module 串行调用对应的 loader 去翻译文件的内容&#xff0c;再找到该 Module 依赖…...

SELinux详解

文章目录 SELinux详解什么是SELinux当初设计的目标&#xff1a;避免资源的误用传统的文件权限与账号主要的关系&#xff1a;自主访问控制(DAC)以策略规则制定特定进程读取特定文件&#xff1a;强制访问控制(MAC) SELinux的运行模式安全上下文进程与文件SELinux类型字段的相关性…...

Go语言实现SSE中转demo

Go语言实现SSE中转demo 文章概要&#xff1a;本文主要通过一个demo来介绍如何使用Go语言实现SSE中转。 本文内容来自&#xff1a;谷流仓AI - ai.guliucang.com 前提 已安装Go语言环境&#xff08;参考这篇文章:Macbook安装Go以及镜像设置&#xff09; 创建项目 创建项目目录…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...