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

MyBatis的配置文件

目录

MyBatis配置

1.properties标签

2.typeAliases标签

3.Mappers标签


一个最全面的MyBatis配置文件可能会包含各种不同的设置和选项,根据实际情况,可以根据需要添加或删除配置。以下是一个包含各种可能设置的示例。

这个配置文件包含了环境设置、数据源配置、映射器配置、属性配置、类型别名、类型处理器、全局设置以及插件配置。根据具体需求,可以根据这个模板添加或删除配置项,并根据需要进行调整。不同项目的配置可能会有所不同,所以可以根据实际情况灵活调整。

更多设置项请参考官方文档mybatis – MyBatis 3 | Configuration

MyBatis配置

<?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><!-- 设置环境 --><environments default="development"><environment id="development"><!-- 配置事务管理器 --><transactionManager type="JDBC" /><!-- 配置数据源 --><dataSource type="POOLED"><property name="driver" value="your_database_driver" /><property name="url" value="your_database_url" /><property name="username" value="your_username" /><property name="password" value="your_password" /></dataSource></environment></environments><!-- 映射器(Mapper)的配置 --><mappers><!-- 使用资源引用映射器文件 --><mapper resource="com/example/YourMapper.xml" /><!-- 或者使用类引用映射器 --><!-- <mapper class="com.example.YourMapper" /> --><!-- 或者使用包名来扫描映射器 --><!-- <package name="com.example.mappers" /> --></mappers><!-- 其他配置 --><properties><!-- 设置属性 --><property name="logImpl" value="STDOUT_LOGGING" /></properties><!-- 类型别名 --><typeAliases><!-- 指定类型别名 --><!-- <typeAlias alias="Author" type="com.example.Author" /> --></typeAliases><!-- 类型处理器 --><typeHandlers><!-- 注册类型处理器 --><!-- <typeHandler handler="com.example.CustomTypeHandler" /> --></typeHandlers><!-- 全局设置 --><settings><!-- 各种设置项 --><!-- <setting name="cacheEnabled" value="true" /> --><!-- <setting name="lazyLoadingEnabled" value="true" /> --><!-- <setting name="multipleResultSetsEnabled" value="true" /> --><!-- <setting name="useColumnLabel" value="true" /> --><!-- <setting name="defaultExecutorType" value="SIMPLE" /> --><!-- 更多设置项请参考官方文档 --></settings><!-- 插件配置 --><plugins><!-- 配置插件 --><!-- <plugin interceptor="com.example.MyPlugin"><property name="someProperty" value="100" /></plugin> --></plugins>
</configuration>

1.properties标签

在MyBatis的配置文件中,<properties> 标签用于定义属性,这些属性可以在配置文件中多处引用,使得配置更加灵活和易于维护。它允许你定义一些可重复使用的值,并在其他地方引用这些值

基本结构

<properties resource="your_properties_file.properties"><property name="propertyName" value="propertyValue" /><!-- 可以包含多个 property 标签 -->
</properties>

两种用法:

1.使用外部资源:使用 resource 属性引用外部属性文件(如 .properties 文件)

<properties resource="your_properties_file.properties" />

这样做的好处在于可以将配置的属性值存储在一个单独的文件中,使得配置文件更加清晰和易于管理。

2.直接定义属性:直接在 <properties> 标签内部使用 <property> 标签定义属性。

<properties><property name="propertyName" value="propertyValue" /><!-- 可以定义多个属性 -->
</properties>

这种方式允许你在配置文件内部定义属性,以供后续引用和使用。

然后,你可以在配置文件的其他地方通过 ${propertyName} 的形式来引用这些属性值。例如:

db.properties

  <!--mysql8--><!--<property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&amp;serverTimezone=Asia/Shanghai"/> --><!--mysql5-->
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3305/mybatis?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=

在mybatis-config.xml引入数据库配置信息

<?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><!--引入db.properties--><properties resource="db.properties"></properties><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC"></transactionManager><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="com/by/mapper/RoleMapper.xml"/></mappers>
</configuration>

2.typeAliases标签

<typeAliases> 标签在MyBatis配置文件中用于定义类型别名,它允许你为Java类型指定简短的别名,以在MyBatis映射文件中引用这些类型。

基本结构

<typeAliases><typeAlias alias="AliasName" type="fully.qualified.name.of.Type" /><!-- 可以定义多个 typeAlias 标签 -->
</typeAliases>

其中:

  • alias 属性用于定义你想要使用的别名。
  • type 属性指定了对应的Java类型的完全限定名。

查看mybatis源码可以看到 Mybatis 默认支持的别名:

 public TypeAliasRegistry() {this.registerAlias("string", String.class);this.registerAlias("byte", Byte.class);this.registerAlias("long", Long.class);this.registerAlias("short", Short.class);this.registerAlias("int", Integer.class);this.registerAlias("integer", Integer.class);this.registerAlias("double", Double.class);this.registerAlias("float", Float.class);this.registerAlias("boolean", Boolean.class);this.registerAlias("byte[]", Byte[].class);this.registerAlias("long[]", Long[].class);this.registerAlias("short[]", Short[].class);this.registerAlias("int[]", Integer[].class);this.registerAlias("integer[]", Integer[].class);this.registerAlias("double[]", Double[].class);this.registerAlias("float[]", Float[].class);this.registerAlias("boolean[]", Boolean[].class);this.registerAlias("_byte", Byte.TYPE);this.registerAlias("_long", Long.TYPE);this.registerAlias("_short", Short.TYPE);this.registerAlias("_int", Integer.TYPE);this.registerAlias("_integer", Integer.TYPE);this.registerAlias("_double", Double.TYPE);this.registerAlias("_float", Float.TYPE);this.registerAlias("_boolean", Boolean.TYPE);this.registerAlias("_byte[]", byte[].class);this.registerAlias("_long[]", long[].class);this.registerAlias("_short[]", short[].class);this.registerAlias("_int[]", int[].class);this.registerAlias("_integer[]", int[].class);this.registerAlias("_double[]", double[].class);this.registerAlias("_float[]", float[].class);this.registerAlias("_boolean[]", boolean[].class);this.registerAlias("date", Date.class);this.registerAlias("decimal", BigDecimal.class);this.registerAlias("bigdecimal", BigDecimal.class);this.registerAlias("biginteger", BigInteger.class);this.registerAlias("object", Object.class);this.registerAlias("date[]", Date[].class);this.registerAlias("decimal[]", BigDecimal[].class);this.registerAlias("bigdecimal[]", BigDecimal[].class);this.registerAlias("biginteger[]", BigInteger[].class);this.registerAlias("object[]", Object[].class);this.registerAlias("map", Map.class);this.registerAlias("hashmap", HashMap.class);this.registerAlias("list", List.class);this.registerAlias("arraylist", ArrayList.class);this.registerAlias("collection", Collection.class);this.registerAlias("iterator", Iterator.class);this.registerAlias("ResultSet", ResultSet.class);}

例如,假设有一个Java类 com.example.Author,你可以在 <typeAliases> 中定义别名:

<typeAliases><typeAlias alias="Author" type="com.example.Author" />
</typeAliases>

这样,在MyBatis映射文件中就可以使用 Author 作为 com.example.Author 类的别名。

也可以使用包名来注册别名,这样就能够批量注册某个包下所有类的别名,如下所示:

<typeAliases><package name="com.example.models" />
</typeAliases>

这将注册 com.example.models 包下所有类的别名,别名默认使用类名(不区分大小写)。例如,com.example.models.Author 类可以直接在映射文件中使用别名 Author

3.Mappers标签

<mappers> 标签是用于配置MyBatis映射器(Mapper)的标签,在MyBatis的配置文件中用于指定映射器文件的位置或者扫描映射器的包名。

这个标签可以包含多个子标签,每个子标签可以是 <mapper><package><resource>

Mappers标签的作用是用来在核心配置文件里面引入映射文件,引入方式有如下三种:

1.使用mapper映射文件的路径

    <mappers><mapper resource="com/by/mapper/RoleMapper.xml"></mapper></mappers>

2.使用mapper接口的路径

<mappers><mapper class="com.by.mapper.RoleMapper"></mapper>
</mappers>

注意:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同

3.使用mapper接口的包名批量引入

<mappers><package name="com.by.mapper"/>
</mappers>

注意:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同

相关文章:

MyBatis的配置文件

目录 MyBatis配置 1.properties标签 2.typeAliases标签 3.Mappers标签 一个最全面的MyBatis配置文件可能会包含各种不同的设置和选项&#xff0c;根据实际情况&#xff0c;可以根据需要添加或删除配置。以下是一个包含各种可能设置的示例。 这个配置文件包含了环境设置、数…...

MCU平台下确定栈空间大小的方法

本文介绍MCU平台下确定栈空间大小的方法。 通常使用IDE开发MCU程序在生成Image文件时&#xff0c;Image文件被划分为代码区&#xff0c;数据区&#xff0c;BSS区&#xff0c;堆区&#xff0c;栈区。其中&#xff0c;代码区&#xff0c;数据区&#xff0c;BSS区空间大小由编译器…...

Flink系列之:SQL提示

Flink系列之&#xff1a;SQL提示 一、动态表选项二、语法三、例子四、查询提示五、句法六、加入提示七、播送八、随机散列九、随机合并十、嵌套循环十一、LOOKUP十二、进一步说明十三、故障排除十四、连接提示中的冲突案例十五、什么是查询块 SQL 提示可以与 SQL 语句一起使用来…...

机器学习算法---聚类

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…...

gitlab ci pages

参考文章 gitlab pages是什么 一个可以利用gitlab的域名和项目部署自己静态网站的机制 开启 到gitlab的如下页面 通过gitlab.ci部署项目的静态网站 # build ruby 1/3: # stage: build # script: # - echo "ruby1"# build ruby 2/3: # stage: build …...

Web ML 库的Transformers.js 提供文本转语音功能

JavaScript 库 Transformers.js 提供了类似 Python Transformers 库的功能&#xff0c;设计用于在 Web 浏览器中直接运行 Transformer 模型&#xff0c;而不再需要外部服务器参与处理。在最新的 2.7 版本中&#xff0c;Transformers.js 引入了增强功能&#xff0c;其中包括文本…...

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜E

老老规矩&#xff0c;看目录&#xff0c;平均每年2E&#xff0c;跟2D一样&#xff0c;D是全对&#xff0c;E是全错&#xff0c;侧面也看出10道题&#xff0c;大概是3A/B&#xff0c;3C&#xff0c;2D&#xff0c;2E&#xff0c;其实还是蛮平均的。但E为1道的情况居多。 第20题…...

【Linux基本指令(2)】

文章目录 一. 基本指令第二回 一. 基本指令第二回 cp指令语法 cp src dst 将目标文件或者目录拷贝到指定目录下或文件下。注意同级目录下&#xff0c;不允许存在同名文件或同名目录。如果将一个file.txt文件拷贝到当前目录下&#xff0c;就重名了&#xff0c;报错cp不了&#…...

Debian系统设置SSH密钥登陆

如果没有安装ssh&#xff0c;root权限运行apt install openssh-server进行安装。 ssh-keygen -t rsa # 生成配对密钥&#xff0c;后续一路enter即可会在用户目录&#xff08;即~这个&#xff09;下生成.ssh文件夹&#xff0c;里面的id_rsa是私钥&#xff0c;id_rsa.pub是公钥…...

uniapp cli开发和HBuilderX开发

uniapp cli开发和HBuilderX开发 前言 uniapp是一个跨平台的开发框架&#xff0c;可以开发出微信小程序、支付宝小程序、百度小程序、头条小程序、H5、App等&#xff0c;开发者只需要写一套代码&#xff0c;就可以发布到各个平台&#xff0c;大大提高了开发效率。 uniapp的开…...

【Java异常】idea 报错:无效的目标发行版:17 的解决办法

【Java异常】idea 报错&#xff1a;无效的目标发行版&#xff1a;17 的解决办法 一&#xff0c;问题来源 springcloud的第一个demo项目就给我干趴了 二、原因分析 java: 无效的目标发行版: 17 原因就是 JDK 版本不对。从 IDEA 编辑器中可以找到问题的原因所在&#xff0c;…...

代码提交规范-ESLint+Prettier+husky+Commitlint

代码提交规范-ESLintPrettierhuskyCommitlint 配置eslint &#xff08;3步&#xff09;配置prettier(4步)1.安装配置prettier2.设置忽略文件 .prettierignore3.处理eslint冲突4. 配置vscode 的settings.json husky安装并配置lint-staged&#xff08;3步&#xff09;安装配置com…...

手动实现 Vue 3的简易双向数据绑定(模仿源码)

Vue 3 带来了许多令人兴奋的新特性和改进&#xff0c;其中之一就是其双向数据绑定的实现方式。与 Vue 2 使用 Object.defineProperty 不同&#xff0c;Vue 3 利用了 JavaScript 的 Proxy 特性来创建响应式数据。在这篇博客中&#xff0c;我们将探讨 Vue 3 中双向数据绑定的基础…...

LVS最终奥义之DR直接路由模式

1 LVS-DR(直接路由模式) 1.1 LVS-DR模式工作过程 1.客户端通过VIP将访问请求报文&#xff08;源IP为客户端IP&#xff0c;目标IP为VIP&#xff09;发送到调度器 2.调度器通过调度算法选择最适合的节点服务器并重新封装数据报文&#xff08;将源mac地址改为调度器的mac地址&am…...

t-SNE高维数据可视化实例

t-SNE&#xff1a;高维数据分布可视化 实例1&#xff1a;自动生成一个S形状的三维曲线 实例1结果&#xff1a; 实例1完整代码&#xff1a; import matplotlib.pyplot as plt from sklearn import manifold, datasets """对S型曲线数据的降维和可视化"&q…...

配置应用到k8s

配置应用到k8s&#xff0c;前置条件是安装了Docker&#xff0c;Minikube&#xff0c;kubectl 应用已经通过Docker生成本地镜像文件 1&#xff0c;创建godemo-deployment.yaml apiVersion: apps/v1kind: Deploymentmetadata:name: godemo-deploymentspec:replicas: 3 #启动三个…...

(四)STM32 操作 GPIO 点亮 LED灯 / GPIO工作模式

目录 1. STM32 工程模板中的工程目录介绍 2. GPIO 简介 3. GPIO 框图剖析 1&#xff09;保护二极管及上、下拉电阻 2&#xff09; P-MOS 管和 N-MOS 管 3&#xff09;输出数据寄存器 3.1&#xff09;ODR 端口输出数据寄存器 3.2&#xff09;BSRR 端口位设置/清除寄存器 4&a…...

你知道跨站脚本攻击吗?一篇带你了解什么叫做XSS

1.XSS简介 &#xff08;1&#xff09;XSS简介 XSS作为OWASP TOP 10之一。 XSS中文叫做跨站脚本攻击&#xff08;Cross-site scripting&#xff09;&#xff0c;本名应该缩写为CSS&#xff0c;但是由于CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式脚本&#x…...

JVM入门

JVM概述 JVM位置 JVM体系结构 注意&#xff1a;栈中一定不存在垃圾&#xff0c;栈中数据用完一个弹出一个&#xff0c;总结来说&#xff0c;栈区、本地方法栈、程序计数器这三块必定不存在垃圾。JVM调优主要是针对方法区、堆&#xff08;99%&#xff09;进行调优。 常用的第三…...

Cmake基础(5)

这篇文章主要描述如何使用cmake构建一个库工程 文章目录 add_libraryinstall 库工程的代码&#xff1a;头文件和源文件 #ifndef ADD_H #define ADD_H#ifdef _WIN32 #ifdef MYMATH_EXPORTS #define MYMATH_API __declspec(dllexport) #else #define MYMATH_API __declspec(dll…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...