MyBatis的配置文件

目录

MyBatis配置

1.properties标签

2.typeAliases标签

3.Mappers标签


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

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

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

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="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 映射文件名称相同

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详细解析POI 和 EasyExcel

在数据量需要被批量导入、导出的时候&#xff0c;就可以使用POI和easyExcel 常用场景&#xff1a; 1、将用户信息导出为excel表格(导出数据…) 2、将Excel表中的信息录入到网站数据库&#xff08;习题上传…&#xff09;大大减轻网站录入量!开发中经常会设计到excel的处理&am…

Unity中Shader平移变换

文章目录 前言方式一&#xff1a;对顶点本地空间下的坐标进行相加平移1、在属性面板定义一个四维变量记录在 xyz 上平移多少。2、在常量缓冲区进行申明3、在顶点着色器中&#xff0c;在进行其他坐标转化之前&#xff0c;对模型顶点本地空间下的坐标进行转化4、我们来看看效果 方…

卷积层里的多输入与多输出通道(channel)

目录 一、多输入输出通道 1、多输入通道 2、多输出通道 3、11卷积层 4、二维卷积层的计算复杂度 5、总结 二、代码实现 1、多输入通道 2、多输出通道 3、11卷积层 4、总结 一、多输入输出通道 1、多输入通道 下图是多输入通道、单输出通道的情况&#xff1a;每个通道…

.NET 药厂业务系统 CPU爆高分析

Windbg 分析 1. CPU 真的爆高吗 还是老规矩&#xff0c;要想找到这个答案&#xff0c;可以使用 !tp 命令。 0:044> !tp logStart: 1 logSize: 200 CPU utilization: 88 % Worker Thread: Total: 8 Running: 4 Idle: 4 MaxLimit: 1023 MinLimit: 4 Work Request in Queue: …

翻译: 负责任的人工智能 Responsible AI

负责任的人工智能指的是以道德、值得信赖和社会负责任的方式开发和使用人工智能。许多开发者、企业和政府都关心这一点&#xff0c;并且一直在进行对话&#xff0c;也在努力确保人工智能的构建和使用是负责任的。由于对负责任的人工智能的所有这些关注和努力&#xff0c;我们在…

网线制作,集线器、交换机、路由器的介绍以及路由器的设置

目录 一. 网线制作 1.1 制作材料 1.2 网线标准 1.3 网线做法 二. 集线器、交换机、路由器介绍 前言 简介 简单来说 三. 路由器的设置 设置1 设置2 设置3 设置4 无线设置 一. 网线制作 1.1 制作材料 网线 …

【进阶篇】YOLOv8实现K折交叉验证——解决数据集样本稀少和类别不平衡的难题,让你的模型评估更加稳健

YOLOv8专栏导航&#xff1a;点击此处跳转 K折交叉验证 K折交叉验证&#xff08;K-Fold Cross-Validation&#xff09;是一种常用的机器学习模型评估方法&#xff0c;可以帮助我们评估模型的性能&#xff0c;特别适用于数据集相对较小的情况。 在K折交叉验证中&#xff0c;将原…

CUMT--Java--JDBC编程

目录 一、JDBC简介 二、数据库访问 1、加载数据库驱动 2、建立数据连接 3、创建Statement对象 4、执行SQL语句 5、访问结果集 三、MetaData接口 1、DatabaseMetaData接口 2、ResultSetMetaData接口 四、事务 1、JDBC中的事务 2、保存点 3、批量更新 一、JDBC简…

若依(ruoyi)管理系统标题和logo修改

1、网页上的logo 2、页面中的logo 进入ruoyi-ui --> src --> assets --> logo --> logo.png&#xff0c;把这个图片换成你自己的logo 3、网页标题 进入ruoyi-ui --> src --> layout --> components --> Sidebar --> Logo.vue&#xff0c;将里面的…

第二周:AI产品经理全局学习

一、AI产品架构全景 二、 AI产品岗位分析和了解 三、 AI产品能力模型 四、AI产品经理工作流 五、AI产品经理学习路径和规划 六、本周市场动态

VM安装Sonoma【笔记】

VMware Workstation安装MacOS Sonoma 1、配置虚拟机&#xff0c;根据系统性能调整参数&#xff1b; 2、先不焦急启动虚拟机&#xff0c;打开虚拟机存储目录&#xff0c;以文本方式打开.vmx文件&#xff08;这里以Sonoma.vmx为例&#xff09;&#xff1b; 这里只针对Inter CP…

select和poll

slelect实现客户端 #include <myhead.h> #define PORT 8888 #define PORT1 9999 #define IP "192.168.125.147" int main(int argc, const char *argv[]) {int cfd-1;if((cfdsocket(AF_INET,SOCK_STREAM,0))-1){perror("socket error");return -1…

Go语言字符串综合指南:函数、方法和最佳实践

Go语言字符串综合指南&#xff1a;函数、方法和最佳实践 引言Go语言字符串基础声明和初始化不可变性字符串长度 字符串操作函数常用字符串操作转换与解析示例连接分割包含关系替换大小写转换整数与字符串的转换字符串到整数的转换格式化与解析 字符串与字符切片字符串和字符切片…

WINDOWS(WIN11)通过IP添加网络打印机

点击添加设备 点击手动添加 使用IP地址或主机名添加打印机 选择TCP/IP设备&#xff0c;输入打印机地址 如果有正确驱动就安装&#xff0c;没有就取消。 通过手动设置添加本地打印机或网络打印机 使用现有的端口 根据打印机IP&#xff0c;选择标准端口。 成功&#xff01; 到…

【LeetCode刷题笔记(12-1)】【Python】【有效的字母异位词】【排序/字符统计】【简单】

文章目录 引言有效的字母异位词题目描述提示 解决方案1&#xff1a;【排序】解决方案2&#xff1a;【字符统计】结束语 有效的字母异位词 引言 编写通过所有测试案例的代码并不简单&#xff0c;通常需要深思熟虑和理性分析。虽然这些代码能够通过所有的测试案例&#xff0c;但…

贪吃蛇(三)绘制蛇身

绘制蛇身的逻辑不难&#xff0c;存储上面使用结构体。 第一行和第十九行绘制--其它行&#xff0c;绘制|&#xff0c;分别在头尾处。 (1) 扫描蛇身&#xff0c;如果扫描到则绘制[]。 (2) 扫描蛇身&#xff0c;如果扫描不到则绘制空白。 #include"curses.h"struct Sn…

cpulimit设计理念及其思考

背景 前几天&#xff0c;同事咨询了我一个问题&#xff1a;IO占用能和cpu使用率那样&#xff0c;有方法来控制吗&#xff1f;这个问题的背景是因为客户提了两个需求&#xff0c;如下&#xff1a; 说实话&#xff0c;针对这两点需求&#xff0c;我的第一反应是有一点思路&#…

第二节TypeScript 基础语法

1、typescript程序由以下几个部分组成&#xff1a; 模块函数变量语句和表达式注释 2、开始第一个typescript程序 创建一个typescript程序&#xff0c;使之输出“hello typescript”&#xff1a; 代码&#xff1a; var message:string "hello typescript" cons…

MaBatis使用`ResultMap`标签手动映射详解使用

文章目录 MaBatis使用ResultMap标签手动映射详解使用1、MyBatis只能自动维护库表”列名“与”属性名“相同时的对应关系&#xff0c;二者不同时无法自动ORM&#xff0c;如下&#xff1a;2、在SQL中使用 as 为查询字段添加列别名&#xff0c;以匹配属性名&#xff1a;但是如果我…

(7)Linux GDB以及gcc和g++

&#x1f4ad; 前言 本章我们将带着大家高雅的学一学令众多习惯图形化页面的朋友难受的 gdb 调试&#xff0c;这部分知识可以选择性学习学习&#xff0c;以后倘若遇到一些问题时能在 Linux 内简单调试&#xff0c;还是很香的。然后在讲讲 gcc 和 g&#xff0c;系统讲解程序运行…