Mybatis全局配置介绍

【mybatis全局配置介绍】

mybatis-config.xml,是MyBatis的全局配置文件,包含全局配置信息,如数据库连接参数、插件等。整个框架中只需要一个即可。

1、mybatis全局配置文件是mybatis框架的核心配置,整个框架只需一个;
2、mybatis全局配置文件中的配置顺序:注意如果配置多项,必须按照以下顺序进行配置properties:属性配置settings:设置typeAliases:类型别名设置typeHandlers:类型处理器enviroments:环境配置environment(环境变量)transactionManager(事务管理器)dataSource(数据源)mappers:映射器

properties(属性)【作用】

1、加载外部的java资源文件(properties文件);
2、通过子标签property设置属性;

【需求】

使用properties属性,配置数据库连接参数;
【1】property标签设置
1、通过properties的子标签设置属性;
2、使用${key}获取设置的属性值;
【2】加载外部properties

第一步:新建资源文件

新建jdbc.properties文件,将连接参数抽取到配置文件中:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db4
username=root
password=1234
第二步:引入资源文件

在mybatis-config.xml文件中加载jdbc.properties文件;通过properties的属性resource引入;

【注意事项】:子标签和属性resource同时加载一个变量,先加载子标签,然后在加载resource关联的外部文件的值,那么子标签中的内容会被覆盖。此时子标签存在就没有意义了。

settings(设置)

【应用场景】

从数据库中查到数据的字段名user_name和实体类属性名userName,不一致,导致查到的数据无法封装到实体类中。
但是,实体类中的属性userName符合驼峰命名,数据库字段名user_name符合数据库经典字段命名。

如果此时直接查询数据,那么用户名是null。

【1】配置驼峰映射

在mybatis-config.xml中做如下配置:

settings设置:
mapUnderscoreToCamelCase :驼峰自动映射配置 ,值是true表示开启驼峰自动映射。满足条件:数据库字段名  user_name   ,实体类属性名 userName
<!--2、settings设置:mapUnderscoreToCamelCase :驼峰自动映射配置 满足条件:数据库字段名  user_name   ,实体类属性名 userName-->
<settings><setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

1、开启驼峰自动映射的作用:user_name ====> userName;

2、注意事项:字段名必须符合user_name格式,属性名必须符合驼峰命名规则;

【2】解决字段名和属性名不一致的方法

如果数据库字段名和属性名不一致,或者是也不满足上面的命名规则。可以通过在SQL语句中为字段名取别名进行映射。

typeAliases(类型别名)

【1】作用

类型别名是给类的全限定名称(包名.类名) 取一个短名称。存在的意义仅在于用来减少类完全限定名的冗余。例如:

这些全限定类名可通过设置类型别名--短名称代替。类型别名的设置有以下几种方式:

方式:使用typeAliases标签的子标签package包扫描映射别名;

【2】应用

【方式】package

扫描指定包下的所有类,扫描之后的别名就是类名,大小写不敏感(不区分大小写),建议使用的时候和类名一致。

设置别名:

<!--三、typeAliases(类型别名)【1】作用:给类的全限定名称 取一个短名称   com.heima.mybatis.pojo.User==>User【2】用法:1、单独取别名:<typeAlias type="com.heima.mybatis.pojo.User" alias="User"/>2、批量取别名:<package name="com.heima.mybatis.pojo"/> 扫描到当前包下的所有类类的类名==》别名--><typeAliases><!--扫描com.itheima.sh.pojo包下所有的类,类名直接作为别名(别名不区分大小写)--><package name="com.itheima.sh.pojo"/></typeAliases>

【内置别名】

这是一些为常见的 Java 类型内建的相应的类型别名。它们都是不区分大小写的,注意对基本类型名称重复采取的特殊命名风格。

别名

映射的类型

_byte

byte

_long

long

_short

short

_int

int

_integer

int

_double

double

_float

float

_boolean

boolean

string

String

byte

Byte

long

Long

short

Short

int

Integer

integer

Integer

double

Double

float

Float

boolean

Boolean

date

Date

decimal

BigDecimal

bigdecimal

BigDecimal

object

Object

map

Map

hashmap

HashMap

list

List

arraylist

ArrayList

collection

Collection

iterator

Iterator

【代码演示】

<!--parameterType="int" 表示sql语句参数id的类型,int是Integer的别名--><select id="queryById" resultType="user" parameterType="int">select * from user where id = #{id}</select>

typeHandlers(类型处理器)【了解】

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。

<!--四、typeHandlers(类型处理器)数据库数据类型:varchar    ===StringTypeHandler===> 实体类:String数据库数据类型:double   DoubleTypeHandler  实体类中的数据: java.lang.Double 
-->

environments【了解】

  MyBatis 可以配置成适应多种环境,例如,开发、测试和生产环境需要有不同的配置;
尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一。
虽然,这种方式也可以做到很方便的分离多个环境,但是实际使用场景下,我们更多的是选择使用spring来管理数据源,来做到环境的分离。
  父标签: environments(环境配置)子标签:environment(环境变量)transactionManager(事务管理器)dataSource(数据源) 
【1】默认环境设置

第一步:在environments标签中配置多个environment,通过属性default指定一个默认环境配置;

第二步:在构建SqlSessionFactory时,可指定具体环境,如果不指定就使用默认的环境配置;

【2】指定环境设置

第一步:在environments中配置多个环境

第二步:在构建SqlSessionFactory时,通过environment的id指定环境

mappers(映射器)

mappers(映射器):

UserMapper.xml====>UserMapper.java接口 关联.

作用:维护接口和映射文件之间的关系.

既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。 但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 URL),或类名和包名等。方式如下:

使用方式: 1、加载映射文件,关联UserMapper.java接口 【1】 从src下加载映射文件;

2、加载接口,关联映射文件 条件:1、接口名和映射文件名保持一致;2、路径保持一致;【2】批量加载class:

方式一:加载映射文件方式resource

在mybatis-config.xml文件中,通过mapper标签的resource属性引入当前工程src下的映射文件。

[缺点】

有多少个映射文件就要配置多少次,麻烦。

方式二:加载接口,关联映射文件方式package

在mybatis-config.xml中,开启包扫描:扫描包下的所有接口和对应的映射文件。

条件:1、接口名和映射文件名保持一致;2、路径保持一致;

在mybatis-config.xml配置mapper接口的全路径:

  <mappers><package name="com.itheima.sh.dao"/></mappers>

【原理】:

扫描目标包目录下的mapper接口,并按照class的方式找到接口对应的映射文件。

其条件和设置class的条件一样:

1、映射文件和mapper接口在同一个目录下
2、文件名必须一致
3、映射文件的namespace必须和mapper接口的全路径保持一致

【缺点】:

1、需要遵守的条件太多
2、mapper.xml和mapper.java没有分离。
【mappers小结】:
mappers:配置映射文件mapperresource:配置类路径下的映射文件(掌握)package:配置接口包扫描(掌握)1、要求接口和映射文件在同一个包下2、要求接口和映射文件同名3、要求namesapce的值必须为接口的全限定类名【推荐使用】resource加载映射文件,如果使用注解开发只能使用 package方式,注解开发不能使用加载配置文件的方式,因为注解已经取代了xml文件。所有注解都使用在接口的方法上。

5.7、全局配置小结

一、全局配置:如果需要配置多个,必须按照以下顺序properties(属性)重点settings(设置)重点typeAliases(类型别名) 重点typeHandlers(类型处理器)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)mappers(映射器)重点
二、常用配置:1、properties(属性)【作用】定义一些属性或者加载外部的资源文件【用法】2、加载外部的资源文件(src, jdbc.properties)掌握<properties resource="jdbc.properties"></properties>获取参数: ${driver}2、settings(设置):驼峰自动映射:数据库下划线命名:user_name  ===》实体类属性命名:userName<settings><setting name="mapUnderscoreToCamelCase" value="true"/></settings>说明:如果不满足驼峰式命名,查询时起别名。3、typeAliases(类型别名)【作用】给类的全名称 取 短名称  com.heima.pojo.User===>User,不区分大小写【配置】<typeAliases><package name="com.heima.mybatis.pojo"/> 掌握</typeAliases>4、mappers(映射器)【作用】把映射文件   和  接口 进行绑定【配置】加载xml文件:1、mapper resource="src下的映射文件"    多加载接口:【1】映射文件和接口名称必须一致; 【2】路径一致2、接口扫描: package name="com.heima.mybatis.dao" 多

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

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

相关文章

Go 项目如何集成类似mybatisPlus插件呢?GORM走起!!

导读&#xff1a; 在 Go 项目中&#xff0c;虽然没有像 MyBatis Plus 这样特定的 ORM 插件&#xff0c;但可以使用功能相似的 Go ORM 框架&#xff0c;比如 GORM&#xff0c;它支持链式查询、自动迁移、预加载等功能&#xff0c;与 MyBatis Plus 有相似之处。通过一些插件或扩…

【JavaEE】——TCP应答报文机制,超时重传机制

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;TCP协议&#xff08;面试重点重点&#xff09; 1&#xff1a;报头长度 2&#xff1a;…

Linux学习网络编程学习(TCP和UDP)

文章目录 网络编程主要函数介绍1、socket函数2、bind函数转换端口和IP形式的函数 3、listen函数4、accept函数网络模式&#xff08;TCP&UDP&#xff09;1、面向连接的TCP流模式2、UDP用户数据包模式 编写一个简单服务端编程5、connect函数编写一个简单客户端编程 超级客户端…

国产单片机及其特点

国产单片机在近年来取得了显著的发展&#xff0c;不仅在技术上不断突破&#xff0c;还在市场上占据了越来越重要的位置。 主要国产单片机品牌及特点 兆易创新&#xff08;GD&#xff09; 主要系列&#xff1a;GD32系列&#xff0c;基于ARM Cortex-M内核。特点&#xff1a;高性能…

PDT 数据集:首个基于无人机的高精密度树木病虫害目标检测数据集

2024-09-24&#xff0c;由中国山东计算机科学中心、北京大学等机构联合创建了Pests and Diseases Tree&#xff08;PDT&#xff09;数据集&#xff0c;目的解决农业领域中病虫害检测模型开发中专业数据集缺失的问题。通过集成公共数据和网络数据&#xff0c;进一步推出了Common…

前端笔记(二):svg图标;git

一、svg图标 原视频 注意&#xff1a;图片是使用的png但是图标是使用的svg&#xff1b; &#xff08;1&#xff09;配置svg ①main.js里引入icons目录 ②调用函数遍历使用svg ③配置symbolId前都加了icon-&#xff0c;所以引用时应该加icon- ④但是使用时没有加因为组件里…

2024.10.15 sql

刷题网站&#xff1a; 牛客网 select device_id as user_infos_example from user_profile where id < 2 select device_id, university from user_profile where university"北京大学" select device_id, gender, age, university from user_profile where ag…

计算机毕业设计Django+Vue.js豆瓣图书推荐系统 图书评论情感分析 豆瓣图书可视化大屏 豆瓣图书爬虫 数据分析 图书大数据 大数据毕业设计 机器学习

《DjangoVue.js豆瓣图书推荐系统》开题报告 一、研究背景与意义 1. 研究背景 随着数字化时代的来临&#xff0c;图书资源日益丰富&#xff0c;用户面临着信息过载的问题。如何在海量图书中快速找到符合个人兴趣和需求的书籍成为了亟待解决的问题。传统的图书检索方式往往基于…

javaweb以html方式集成富文本编辑器TinyMce

前言&#xff1a; 单一的批量图片上传按钮&#xff0c;禁用tinymce编辑器&#xff0c;但是还可以操作图片编辑&#xff1b; 多元化格式的富文本编辑要求&#xff1b; 采用tinymce实现。 附&#xff1a; tinymce中文手册网站&#xff1a; http://tinymce.ax-z.cn/download-all.…

空间解析几何 3:空间点到线段和平面的距离【附MATLAB代码】

目录 空间中点到线段的距离 空间中点到平面的投影和距离 matlab代码 空间中点到线段的距离 空间中点到平面的投影和距离 matlab代码 function [dis,P2,t] point2Line (A1,B1,C1) %求空间一点到一线段的最短距离 %[dis,P2,Q2]pointSegmentDistance(A,B,C) %A B为线段首末端…

使用LlamaFactory进行模型微调

使用LlamaFactory进行模型微调 简介 论文地址&#xff1a;https://arxiv.org/pdf/2403.13372 仓库地址&#xff1a;https://github.com/hiyouga/LLaMA-Factory/tree/main 名词解释 1. 预训练 (Pre-training, PT) 预训练是指模型在大规模无监督数据集上进行初步训练的过程…

最强 OpenAI o1 逻辑推理正确率仅 50%!清华、智谱推出「大模型逻辑推理新基准」

9.11 和 9.9 哪个大&#xff1f; 这一连人类幼儿园儿童都能回答的问题&#xff0c;曾经&#xff08;至今&#xff09;难倒了众多大语言模型&#xff08;LLM&#xff09;。 然而&#xff0c;要想达到通用人工智能&#xff08;AGI&#xff09;的水平&#xff0c;LLM 不仅要完成“…

居民小区的有序充电策略及解决方案

0引言 全球经济增长导致化石能源过度消耗&#xff0c;加剧环境污染。电动汽车因其环保优势迅速崛起&#xff0c;预计到2030年中国电动汽车保有量将达到6000万辆。这有助于减少化石能源依赖&#xff0c;推广绿色出行&#xff0c;但也对电网稳定性构成挑战。因此&#xff0c;研究…

2.1 HTML5 - Canvas标签

文章目录 引言Canvas标签概述定义实例&#xff1a;创建画布 理解Canvas坐标系概述实例&#xff1a;获取Canvas坐标 获取Canvas环境上下文概述实例&#xff1a;获取Canvas上下文设置渐变色效果 结语 引言 大家好&#xff0c;今天我们要一起探索HTML5中一个非常有趣且强大的特性…

001 Hadoop安装、Spring整合测试

Hadoop安装、整合测试 文章目录 Hadoop安装、整合测试1.简介1.优点2.组成 2.安装1.安装jdk&#xff08;如已安装可跳过&#xff09;2.安装hadoop1.安装2. 修改配置文件core-site.xml3. 修改配置文件hdfs-site.xml4.启动hadoop5.启动yarn6.执行jps查看7.相关端口及配置位置8.访问…

python中不变的数据类型有哪些

在Python中&#xff0c;不可变&#xff08;immutable&#xff09;数据类型是指一旦创建了这些类型的对象后&#xff0c;就不能改变其值。Python中的不可变数据类型包括以下几种&#xff1a; 数字 (int, float, complex): 这些类型的数值一旦创建就不能更改。例如&#xff0c;如…

Flutter 与 React Native - 详细深入对比分析(2024 年)

超长内容预警&#xff0c;建议收藏后阅。 Flutter 和 React Native 是跨平台应用程序开发的两个领先工具。了解它们的差异以及各自的最佳用例。 什么是Flutter&#xff1f; Flutter 是 Google 于 2018 年发布的用户界面 (UI) 软件开发套件。Flutter 可让您为多种平台和操作系统…

在线深度学习:爱奇艺效果广告分钟级模型优化

01# 背景 在效果广告投放场景中&#xff0c;媒体侧需要准确衡量每次请求的价值&#xff0c;模型预估值在广告竞价中扮演着核心角色。模型预估精度的提升&#xff0c;是改善媒体侧变现效率、提升广告收益的核心技术驱动力。 此前&#xff0c;爱奇艺效果广告预估模型为小时级模型…

构建流媒体管道:利用 Docker 部署 Nginx-RTMP 从 FFmpeg RTMP 推流到 HLS 播放的完整流程

最近要实现一个类似导播台的功能&#xff0c;于是我先用 FFmpeg 实现一个参考对照的 Demo&#xff0c;我将其整理为一篇文章&#xff0c;方便后续大家或者和自己参考&#xff01; 1、软件工具介绍 本次部署相关软件 / 工具如下&#xff1a; FFmpeg&#xff1a;全称是 Fast Fo…

软件确认测试内容和方法分享,CMA、CNAS第三方软件检测机构推荐

在现代软件开发中&#xff0c;软件确认测试扮演着至关重要的角色。它不仅帮助开发团队识别系统中的缺陷&#xff0c;还确保软件产品符合用户需求和期望。 软件确认测试旨在验证软件系统的性能和功能是否符合设计规格和用户需求。它通常在软件开发的后期进行&#xff0c;以确保…