MyBatis 配置文件解析

news2025/1/18 4:50:08

MyBatis 的核心配置文件是 mybatis-config.xml。注意配置文件中节点的顺序有要求,必须按照下面的顺序填写节点信息:

(properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databaseIdProvider,mappers)

<configuration>
    <properties></properties>
    <settings></settings>
    <typeAliases></typeAliases>
    <typeHandlers></typeHandlers>
    <objectFactory></objectFactory>
    <objectWrapperFactory></objectWrapperFactory>
    <reflectorFactory></reflectorFactory>
    <plugins></plugins>
    <environments></environments>
    <databaseIdProvider></databaseIdProvider>
    <mappers></mappers>
</configuration>

环境配置与 mappers 映射器

基本的 MyBatis 配置:

<?xml version="1.0" encoding="UTF8" ?>
<!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="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <!--每个mapper.xml都需要在mybatis配置文件中进行配置-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

在上面这段配置中配置了运行环境以及 mappers 映射器。

配置 environment 时,通过 transactionManager 指定事务管理器,通过 dataSource 指定数据库的引擎类型、连接方式、用户名、密码。

mappers 映射器用来和代码中写的 mapper 一一对应,在代码中写一个 mapper 接口和 mapper.xml 文件,就需要在 mappers 映射器中增加一个 mapper 节点。

属性(properties)

在写 mybatis-config.xml 环境配置的时候,将数据库的连接信息直接写在了 mybatis-config.xml 配置文件中,不方便后续的更改,因此可以使用属性(properties)的能力。

在 resources 目录下新建一个 db.properties:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=123

接着在 mybatis-config.xml 的 configuration 中添加 properties 节点,注意这个节点的位置必须放在首位。

<properties resource="db.properties">
</properties>

接着就可以用 properties 中的属性去代替 xml 中的属性

<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>

设置(settings)

配置文件中的 settings 是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

常用的设置有以下几种:

在这里插入图片描述

设置的配置方式如下:

<settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="true"/>
    <setting name="mapUnderscoreToCamelCase" value="false"/>
    <setting name="logImpl" value="NO_LOGGING"/>
</settings>

类型别名(typeAliases

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

类型别名有两种方式,第一种是对类取别名,第二种是指定一个包名

<mapper namespace="com.cn.mapper.UserMapper">
    <select id="getUserList" resultType="com.cn.pojo.User">
        select * from user;
    </select>
</mapper>

第一种方式是对类取别名,这里的 resultType 写的是类的全限定名,我们可以在 mybatis-config.xml 中使用类型别名来简化。typeAliases 在配置文件中的位置需要放在 setting 后面

<typeAliases>
    <typeAlias type="com.cn.pojo.User" alias="user"/>
</typeAliases>

这样设置之后就可以在 resultType 中直接使用 user

<mapper namespace="com.cn.mapper.UserMapper">
    <select id="getUserList" resultType="user">
        select * from user;
    </select>
</mapper>

第二种方式是指定一个包名,MyBatis 会在指定的包名路径下搜索需要的 JavaBean。修改配置文件,使用包名来指定

<typeAliases>
    <package name="com.cn.pojo"/>
</typeAliases>

每一个在包 com.lanqiaoyun.pojo 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 com.lanqiaoyun.pojo.User 的别名为 user;若有注解,则别名为其注解值

@Alias("user")
public class User {
    ...
}

上方所示完整配置文件如下:

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="db.properties">
    </properties>
    <settings>
        <setting name="cacheEnabled" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="mapUnderscoreToCamelCase" value="false"/>
        <setting name="logImpl" value="NO_LOGGING"/>
    </settings>
    <typeAliases>
        <package name="com.cn.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--每个mapper.xml都需要在mybatis配置文件中进行配置-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

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

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

相关文章

Odoo丨如何在Odoo中修改HTML编辑工具栏?

文章目录一、前言二、渲染原理三、修改方法一、前言 在odoo中&#xff0c;当我们在页面上使用Html类型或者html的小组件的时候&#xff0c;页面渲染成如下格式&#xff0c;供用户编辑⬇ 上方有一些工具栏如背景颜色&#xff0c;字体颜色&#xff0c;字体大小&#xff0c;插入表…

【Linux04-进程概念下】不愧是操作系统,优美的设计!

前言 上期的分享让我们知道进程大概的模样&#xff0c;本期一样重要&#xff0c;能学到操作系统设计的优美&#xff0c;体会到前辈们的智慧。 #环境变量 是什么 OS提供&#xff0c;往往有特殊功能的全局变量&#xff08;/etc/profile.d是设置环境变量的目录&#xff09; [b…

React 入门:实战案例 Github搜索_axios发送请求

文章目录快速搭建 API 服务器在 Search 组件中实现 Axios 发送请求在 App 组件中管理 List 组件的用户列表状态在 List 组件中更新渲染用户列表数据优化完善完整源码最终效果&#xff1a;快速搭建 API 服务器 根据下面步骤来操作&#xff0c;就可以快速搭建一个符合本案例使用…

明年跨境电商外贸的新增量在哪里?来自专家的2个判断

明年跨境电商外贸的新增量在哪里&#xff1f;来自专家的2个判断2022年&#xff0c;外贸大环境不容易&#xff0c;外贸人也不容易。自2021年9月以来&#xff0c;海运费飙涨&#xff0c;库容一降再降。大批的货品滞留库存&#xff0c;部分卖家只好硬着头皮扛下来了高额的仓储费&a…

最佳实践 | 帮助您的游戏在斋月期间大放异彩

作者 / Google Play 游戏业务发展经理 Nimrod Levy世界各地的开发者都发现&#xff0c;在斋月期间&#xff0c;许多庆祝这个神圣月份的国家/地区的用户都会比平时更活跃。这是一个吸引穆斯林玩家的宝贵机会。斋月是伊斯兰历的第 9 个月。世界各地的穆斯林都会在这个月进行斋戒、…

RV1126笔记二十二:pt->onnx->rknn模型转换

若该文为原创文章,转载请注明原文出处。 一、介绍 实现的目标是,把RK提供的yolov5s.pt转成onnx,在把onnx转成rknn,部署到RV1126上面。 这里不训练模型,所以只要搭建好环境后,就可以直接运行测试。 这里只是提供一种转换的方法,有其他的方式,可以自行测试。 由于不…

立根铸魂 崛起数智时代 操作系统产业峰会2022即将启幕!

如今&#xff0c;数字经济成为全球经济增长的主引擎。基础软件是数字经济发展的基础&#xff0c;是制造强国、网络强国、数字中国建设的关键支撑。而基础软件中的操作系统&#xff0c;作为数字基础设施的底座&#xff0c;已经成为推动产业数字化、智能化发展的核心力量。 2022…

Codeforces Round #840 (Div. 2)

A. Absolute Maximization 题目链接&#xff1a;Problem - A - Codeforces 样例输入&#xff1a; 4 3 1 0 1 4 5 5 5 5 5 1 2 3 4 5 7 20 85 100 41 76 49 36样例输入&#xff1a; 1 0 7 125题意&#xff1a;给定一个长度为n的数组a[]&#xff0c;我们可以对这个数组中的数进…

VueJs中setup的使用(上)

前言在写组合式API代码时,首先接触到的是setup这个函数,在一些项目代码里,你会看到有的直接在script标签上添加setup标识,有的在选项式API方式里,以setup()函数,配置选项的方式出现在单文件组件里什么时候用setup()函数方式,什么时候不用,对于有些新手同学,有些困惑,以及它的一…

聚观早报 | 特斯拉上海工厂被曝停产;富士相机X-Pro 3已停产

今日要闻&#xff1a;特斯拉上海工厂被曝停产&#xff1b;富士相机X-Pro 3已停产&#xff1b;字节复活红果小说App&#xff1b;网易云音乐首份乐评报告发布&#xff1b;辛巴年货节单场带货超1400万单特斯拉上海工厂被曝停产 12 月 26 日消息&#xff0c;根据一份内部通知和两位…

十八、Docker可视化管理工具Portainer

1、概述 Portainer分两个版本 开源版本&#xff1a;Portainer Community Edition (CE) 和商业版本&#xff1a;Portainer 商业版 (BE)。 CE 拥有超过 50 万的普通用户&#xff0c;是一个功能强大的开源工具集&#xff0c;可让您轻松地在 Docker、Docker Swarm、Kubernetes 和…

SpingBoot常见注解区分

1、Mapper注解&#xff1a; 作用&#xff1a;在接口类上添加了Mapper&#xff0c;在编译之后会生成相应的接口实现类 添加位置&#xff1a;接口类上面 Mapper public interface UserMapper{/*** param username 用户名* param password 密码* param memberLevelId 会员级别* p…

【Pygame实战】俄罗斯方块 | 太好玩了~停不下来,这种版本(Turtle彩版)你肯定没玩过……(经典怀旧:无人不知的俄罗斯方块)

导语 警报警报&#xff01;听说CSDN游戏专区火了火了~竟然是因为各种形状的方块。 对&#xff01;各种游戏都快烂大街了&#xff0c;俄罗斯方块咋滴就不能火一把了&#xff1f; Python版俄罗斯方块 等你来战&#xff01; 所有文章完整的素材源码都在&#x1f447;&#x1f447;…

分库分表必知

概述 为啥要进行分库分表&#xff1f; 单表数据量太大&#xff0c;比如超过5000w行&#xff0c;查询时扫描的行太多&#xff0c;SQL效率低&#xff0c;CPU出现瓶颈 数据的切分就是通过某种特定的条件&#xff0c;将存放在同一个数据库或同一个表的数据分散存放到多个数据库&a…

干货 | 数字经济创新创业——网络安全

下文整理自清华大学大数据能力提升项目能力提升模块课程“Innovation & Entrepreneurship for Digital Economy”&#xff08;数字经济创新创业课程)的精彩内容。主讲嘉宾&#xff1a;Kris Singh: CEO at SRII, Palo Alto, CaliforniaVisiting Professor of Tsinghua Unive…

在 ArcGIS 中使用函数块给字段赋随机值 (指定范围内随机编号)

在 ArcMap 或 ArcGIS Pro 中通过使用字段计算器,给字段赋随机值。 通过字段计算器内置的 VB、Python 方法可以构建函数块表达式实现各种各样的赋值操作,下面我们来看看通过使用内置的 Python 函数块来实现随机赋值。 (也可以制作成工具箱哦,更加方便) ArcMap 生成随机值…

智能开关继电器-选型篇2

继电器在智能开关中承担着开通、关断的功能&#xff0c;是开关产品最根本的一项功能。这样一个关键的器件我们将分为两个篇章进行撰写&#xff1a;选型篇1、选型篇2、评估篇。其中选型篇1简述继电器的定义、分类&#xff0c;可参考《智能开关继电器-选型篇1》。选型篇2会在基于…

【TypeScript】类型声明文件的讲解与使用

目录 简介 文件类型 类型声明文件使用 简介 我们发现今天所有的JS应用都会引入许多第三方库来完成任务需求。这些第三方库无论是否是TS编写的最终都会编译成JS代码给开发者使用。我们知道TS提供了类型才有了代码提示和类型保护机制&#xff0c;但我们引入的第三方库都会有相…

搞懂 Spark 系列之 Spark Shuffle 的前世今生

注&#xff1a;本文已首发于PowerData公众号&#xff01; 1 Spark Shuffle 是什么&#xff1f; Shuffle 中文意思是“洗牌&#xff0c;混洗”&#xff0c;而在 Hadoop 的 MapReduce 框架中&#xff0c;Shuffle 是 Map 和 Reduce 中间必不可少的连接桥梁。数据在从Map 阶段结束…

优化器核心技术—Join Reorder

Join Reorder 的简介 Join Reorder 是开务数据库 SQL 优化器中的核心优化算法&#xff0c;开务数据库优化器包括 RBO 和 CBO 两部分&#xff0c;负责计划优化&#xff0c;提升 SQL 执行性能。Join Reorder 能够保证在复杂查询执行的场景下&#xff0c;枚举合法的执行路径&…