Mybatis的核心配置

news2024/12/25 23:38:32

目录

一、environments环境配置

 二、propertis资源配置

三、typeAliases类型别名

四、mappers映射

五、其他标签


一、environments环境配置

标签名描述
<environments>用于配置多个环境的容器标签,可以包含多个 <environment> 子标签。
<environment>用于配置单个环境的标签,在 <environments> 内使用,包含数据库连接信息、事务管理器等配置。
<transactionManager>用于配置事务管理器的标签,在 <environment> 内使用,用于管理数据库操作的事务。
<dataSource>用于配置数据源的标签,在 <environment> 内使用,包含数据库连接池、连接参数等配置。
<?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选择其中的某一个环境
        如下所示,一般一个项目只用一个环境,而此处使用的环境是id为development也可以改成test
 -->
    <environments default="development">
<!--        environment:设置一个具体连接数据库的环境
            id为唯一标识,不能重复
-->
        <environment id="development">
<!--
            transactionManager:设置事务管理器
            type:设置事务管理方式
            type只有两种类型:JDBC || MANAGED
            JDBC:表示使用原生的JDBC的事务管理方式
            MANAGED:被管理,在Spring整合MyBatis时候可以由AOP声明式事务管理
-->
            <transactionManager type="JDBC"/>
<!--
            dataSource:设置数据源
            type:设置数据源的类型
            type类型 POOLED || UNPOOLED || JNDI
            POOLED:表示数据库连接池,当连接完毕后,每一次连接时候就不需要重新去与数据库进行连接,直接从数据库连接池中获取
            UNPOOLED:表示不使用数据库连接池,每一次的连接都需要重新进行连接
            JNDI:(了解) 表示使用上下文中的数据源
-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mysqltest"/>
                <property name="username" value="mysql"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
<!--        environment为环境配置,id为唯一标识-->
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mysqltest"/>
                <property name="username" value="mysql"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!--    配置映射文件-->
    <mappers>
        <!--        这个暂时不需要设置默认为空就行,在后面具体操作的时候再进行配置-->
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>


 二、propertis资源配置

标签名描述
<properties>用于包含一组属性配置的容器标签。
<property>用于定义单个属性的标签,在 <properties> 内使用,包含属性的键值对信息。

有两种方式可以使用properties资源配置

第一种是直接使用property标签表示资源名称与对应的值

 <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
<!--                
                资源:通过设置资源,进行配置
-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mysqltest"/>
                <property name="username" value="mysql"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

第二种是通过propertis文件导入的形式配置文件内容

资源包内容

jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/mysqltest
jdbc.username = mysql
jdbc.password = xxxxxx

 通过引入资源包后,使用${key}访问对应value的值

<configuration>
<!--      1.记得先通过引入资源包(jdbc.properties)后,此后可以通过${key}的方式访问value
-->
    <properties resource="jdbc.properties"/>

    <environments default="development">

        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
<!--        
                通过使用"${key}"的方式访问对应的value
-->
                <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="mappers/UserMapper.xml"/>
    </mappers>
</configuration>
注意在配置文件中使用配置标签的顺序是
        properties?,settings?,typeAliases?,typeHandlers?,
        objectFactory?,objectWrapperFactory?,reflectorFactory?,
        plugins?,environments?,databaseIdProvider?,mappers?
        如果不按照此顺序执行则会报错

三、typeAliases类型别名

标签名描述
<typeAliases>用于配置类型别名的容器标签,用于简化 MyBatis 的配置。
<typeAlias>用于定义单个类型别名的标签,在 <typeAliases> 内使用,可以将 Java 类型映射为短的别名。
<package>用于扫描指定包下的类并自动添加类型别名,在 <typeAliases> 内使用,该标签会自动扫描指定包下的类并将其类名作为别名。
<configuration>
<!--    注意在配置文件中使用配置标签的顺序是
        properties?,settings?,typeAliases?,typeHandlers?,
        objectFactory?,objectWrapperFactory?,reflectorFactory?,
        plugins?,environments?,databaseIdProvider?,mappers?
        如果不按照此顺序执行则会报错
-->
    <properties resource="jdbc.properties"/>
<!--    typeAliases 类型别名复数标签-->
    <typeAliases>
<!--        type:设置类型的值
            alias:设置类型的别名
-->
        <typeAlias type="com.alphamilk.mybatis.pojo.User" alias="UserReal"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <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="mappers/UserMapper.xml"/>
    </mappers>
</configuration>

在接口方法对应映射的xml配置文件中可以通过

 typeAliases有两种设计模式,一种是通过设置alias对应值,另一种是默认标签,不设置alias,则当前类型有默认的类名,并且不区分大小写。

    <typeAliases>
<!--        type:设置类型的值
            alias:设置类型的别名
-->
<!--        有两种类型别名方法,一种是通过设置alias-->
        <typeAlias type="com.alphamilk.mybatis.pojo.User" alias="UserReal"/>
<!--        第二种是只设置type,alias默认为类名,并且不区分大小写
            如下所示,默认名称为User
-->
        <typeAlias type="com.alphamilk.mybatis.pojo.User"></typeAlias>
    </typeAliases>

但是这样也有问题,当一个项目有上百个实体类时候,如果通过类的别名去使用则将会非常麻烦,需要写上百行类别名标签。所以还有一种方法,设置<package>标签,该标签会自动将该包下所有类名称改为默认类名

 <typeAliases>
<!--        type:设置类型的值
            alias:设置类型的别名
-->
<!--        有两种类型别名方法,一种是通过设置alias-->
        <typeAlias type="com.alphamilk.mybatis.pojo.User" alias="UserReal"/>
<!--        第二种是只设置type,alias默认为类名-->
<!--        <typeAlias type="com.alphamilk.mybatis.pojo.User"></typeAlias>-->
        <package name="com.alphamilk.mybatis.pojo"/>
    </typeAliases>

四、mappers映射

标签名描述
<mappers>用于配置映射器(Mapper)的容器标签,用于指定 MyBatis 映射器的配置方式。
<mapper>用于指定单个映射器(Mapper)的标签,在 <mappers> 内使用,用于指定映射器的配置文件路径或类名。
<package>用于扫描指定包下的映射器接口,并自动添加到 MyBatis 的配置中,在 <mappers> 内使用,该标签会自动扫描指定包下的映射器接口,并将其添加到 MyBatis 的配置中。

由于ORM结构,一张表对应一个实体类对应一个接口对应一个映射

而映射的设置有两种

一种是正常导入映射文件,但是缺点很明显,一次只能导入一个xml映射,当有很多个实体类时候就会变得非常麻烦,所以引入了包package,大批量导入映射xml

 <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>

使用包导入

    <mappers>
<!--        <mapper resource="mappers/UserMapper.xml"/>-->
<!--        使用package导入映射文件-->
<!--        以包的方式引入映射文件,但是必须满足两个条件
            1,mapper接口和映射文件所在的包必须一致
            2,mapper接口的名字和映射文件的名字必须一致 -->
        <package name="com.alphamilk.mybatis.mapper"/>
    </mappers>

注意:

以包的方式引入映射文件,但是必须满足两个条件

1,mapper接口和映射文件所在的包必须一致

2,mapper接口的名字和映射文件的名字必须一致


五、其他标签

标签名描述
<plugins>用于配置插件的容器标签,可以在 MyBatis 执行过程中拦截和修改某些操作行为。
<settings>用于配置 MyBatis 全局设置的标签,包含各种全局配置选项。
<typeHandlers>用于配置类型处理器的容器标签,用于处理 Java 类型与数据库类型之间的映射。
<objectFactory>用于配置对象工厂的标签,用于创建结果对象的实例。
<objectWrapperFactory>用于配置对象包装工厂的标签,用于包装结果对象。
<reflectorFactory>用于配置反射工厂的标签,用于缓存类的反射信息。
<databaseIdProvider>用于配置数据库标识提供者的标签,用于根据数据库产品名称动态选择 SQL 语句。

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

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

相关文章

第6天----【位运算进阶之-----位与()】七夕特别版

今天我们来学习C语言的位与。 ❤️C语言的位与&#xff08;&&#xff09;操作是一种按位运算符&#xff0c;用于对两个操作数的每个对应位执行逻辑与操作。它的操作规则如下&#xff1a; 如果两个操作数的对应位都为1&#xff0c;则结果的对应位也为1。&#xff08;全1才…

vue vs react vue3 和 react区别

vue 简介&#xff1a;渐进式 JavaScript 框架 来源&#xff1a;最初由 Evan You &#xff08;尤雨溪&#xff09;于2014年开发。Evan You之前在Google研究过AngularJS&#xff0c;并提取了Angular的部分特性以提供一个更轻量级的框架 版本&#xff1a; vue 1x&#xff1a;2014…

如何使用Nmap进行端口扫描和服务识别?

今天将重点介绍如何使用Nmap进行端口扫描和服务识别。Nmap是一款强大的网络扫描工具&#xff0c;它可以帮助我们快速了解目标主机的开放端口和运行的服务。 1. 什么是Nmap&#xff1f; Nmap&#xff08;Network Mapper&#xff09;是一个开源的网络扫描工具&#xff0c;用于发…

xcode15 change

jump to define 由原先的 control command left click 改为command left click

安达发|APS生产排产软件的作用有哪些?

生产排产管理软件作用有哪些&#xff1f;很多生产型企业在生产计划排产环节&#xff0c;基本还靠手工方式在Excel中进行。而且还因参与制定和使用表格的人较多&#xff0c;表格制作水平参差不齐&#xff0c;极易造成生产计划及后续环节管理混乱。此时&#xff0c;就需借助专业的…

回归预测 | MATLAB实现GA-ELM遗传算法优化极限学习机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GA-ELM遗传算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GA-ELM遗传算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍程序…

外包干了三年,技术退步明显...

先说一下自己的情况。大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近3年的测试&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了三年&#xff0c…

【音视频】基于webrtc的聊天室的设计

目录 术语 webrtc建连流程 系统整体架构 信令服务器房间状态管理 用户加入房间流程 用户加入房间并推流&#xff1a; 其他用户订阅此用户流 用户加入房间并订阅房间其他所有用户 用户退出房间流程 平行集群模式​编辑 第一阶段demo 设计 参考文章 术语 sdp: 在webrt…

如何使用 HOOPS Exchange SDK 和 Polygonica Bridge

这里将讨论使用 HOOPS Exchange 和 Polygonica 以及它们之间的桥梁进行 CAD 访问和网格处理。--提供Crack HOOPS 全系列SDK HOOPS Exchange 基础知识 首先&#xff0c;让我们简单回顾一下 HOOPS Exchange。HOOPS Exchange 是一款具有 C 接口的数据访问 SDK&#xff0c;支持导入…

AMEYA360邀您参加越南NEPCON VIETNAM电子元器件材料及生产设备展览会

9月6日-8日&#xff0c;极具影响力的2023越南电子元器件展(Nepcon Vietnam)即将在越南河内展览中心(I.C.E) 隆重举办。 越南电子元器件材料及生产设备展览会是越南唯一的电子制造SMT、测试技术、设备和支持产业的展会&#xff0c;也是励展博览集团旗下知名展会品牌NEPCON系列展…

夏日渲染季 | 效果图充值狂欢惠,清凉夏日即刻拥有!

炎炎夏日&#xff0c;狂欢不停&#xff01; 蓝海创意云效果图渲染大放价~~~ 活动时间&#xff1a;即日起-2023.10.31 即刻开启你的夏日清凉模式吧&#xff01; 活动范围&#xff1a;所有效果图用户 活动时间&#xff1a;即日起-2023.10.31 活动内容&#xff1a; 特别说明:…

JavaWeb 速通Filter

目录 一、Filter快速入门 1.基本介绍 : 2.基本原理 : 3.入门实例 : 4.生命周期 : 二、FilterConfig和FilterChain 1.FilterConfig : 1 基本介绍 2 应用实例 2.FilterChain : 1 基本介绍 2 基本原理 3 应用实例 4 使用细节 一、Filter快速入门 1.基本介绍 : Filter&…

【Python原创设计】基于Python Flask 机器学习的全国+上海气象数据采集预测可视化系统-附下载链接以及详细论文报告,原创项目其他均为抄袭

基于Python Flask 机器学习的全国上海气象数据采集预测可视化系统 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 在信息科技蓬勃发展的当代&#xff0c;我们推出了一款基于Python Flask的全国上海气象数…

斯里兰卡生态系统服务价值量计算

斯里兰卡生态服务价值计算 一、引言 生态系统服务价值是指人类间接或直接从生态系统各服务功能中获得的收益&#xff0c;对人类社会福祉起着极其重要的贡献。生态系统服务价值核算作为一项基础性研究工作&#xff0c;对生态安全格局的构建、生态补偿以及生态文明建设等研究有重…

【Linux】socket编程(一)

目录 预备知识 理解源ip地址和目的ip地址 认识端口号 理解"端口号"和"进程ID" 认识TCP和UDP协议 网络字节序 socket编程接口 socket常见API socket bind listen accept conncet sockaddr与sockaddr_in socket的使用(简易UDP网络程序的编…

17款奔驰S400升级原厂无钥匙进入系统,提升您的便利性

奔驰无钥匙进入功能&#xff0c;只要身上装着车钥匙进入车内&#xff0c;车辆就能感应到钥匙的存在&#xff0c;这时只需按下启动键就可启动车辆了 奔驰无钥匙进入功能主要有两大使用体验&#xff0c;首先就是要注意主驾驶位车门的有效检测距离不小于1.5m&#xff0c;其他门钥匙…

2022年09月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;课程冲突 小 A 修了 n 门课程, 第 i 门课程是从第 ai 天一直上到第 bi 天。 定义两门课程的冲突程度为 : 有几天是这两门课程都要上的。 例如 a11&#xff0c;b13&#xff0c;a22&#xff0c;b24 时, 这两门课的冲突程度为 2。 现在你需要求的是这 n 门课中冲…

vue 中 axios 的安装及使用

vue 中 axios 的安装及使用 1. axios 安装2. axios使用 1. axios 安装 首先&#xff0c;打开当前的项目终端&#xff0c;输入 npm install axios --save-dev验证是否安装成功&#xff0c;检查项目根目录下的 package.json,其中的 devDependencies 里面会多出一个axios及其版本…

【中国善网】资源对接(场地捐赠)公示

-----仰和百花心理咨询认领安利公益基金会捐赠场地 近日&#xff0c;经过中国善网与安利公益基金会的沟通与对接&#xff0c;仰和百花心理咨询获得免费认领安利公益基金会场地&#xff08;安利深圳体验馆&#xff09;8月22-25日为期4天的使用权&#xff0c;特此公示。为推动公…

(嵌入式c语言)类型修饰符

类型修饰符 对内存资源存储位置的限定 auto 默认的类型修饰符 修饰的变量可读可写 register 因为你内部寄存器比较少&#xff0c;使用此类型修饰符&#xff0c;会告诉编译器尽量把此数据放到寄存器。 CPU内部寄存器是编号来定义&#xff0c;无地址编号&#xff0c;所以r…