引入了mybatis-spring-boot-starter,还需要引入mysql-connector-java吗?

news2024/11/15 7:32:44

spring boot集成mybatis,是需要引入mybatis-spring-boot-starter,有文章说不需要引入mysql-connector-java,但实际用下来并不行,我看了里面的pom文件,终于知道怎么一回事。

  <!--引入mybatis的依赖-->
  <dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>2.1.2</version>
  </dependency>

在这里插入图片描述
在这里插入图片描述

mybatis-spring-boot-starter是有mysql-connector-java依赖,但它的范围scope是test,所以还需要在pom文件里引入

scope的依赖传递
A–>B–>C。当前项目为A,A依赖于B,B依赖于C。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?
答案是:
当C是test或者provided时,C直接被丢弃,A不依赖C;

  <!--引入连接mysql的驱动-->
  <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.38</version>
  </dependency>

附加知识

maven的dependency标签除了针对jar包的定位gav(Maven坐标)外,有时候还会写上scope这个标签,它表示该jar包的作用范围,可用值如下:

  1. compile:默认的scope的值,对src/main/java有效,对src/test/java也有效,参与打包,这也是大多数jar包的配置
  2. test:对src/main/java无效,对src/test/java下面的类有效,不参与打包,比如我们最常用的junit的配置:
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
  1. provider:对主程序有效,对测试程序有效,配置了这个作用域范围的jar包,说明在编译和测试时候需要使用到这个jar,打包时不需要,比如常用的servlet-api,因为我们的maven工程一般使用jetty或者tomcat插件来启动,在工程里面假如用到了HttpServletRequest这个类,很常见吧,但是我们的maven工程并没有像dynamic web project那样,引入了tomcat的jar包,因此我们需要引入:
<dependency>  
	<groupId>javax.servlet</groupId>  
	<artifactId>servlet-api</artifactId>  
    <version>2.3</version>
    <scope>provided</scope>  
</dependency>

打成war包的时候,肯定会把war包放到web容器里面,而web容器里面已经存在了servlet-api,因此我们在打成war包的时候就需要把servlet-api给排除掉,因此使用provided的scope级别。

  1. runtime:程序运行时才需要真正使用到的jar包,比如mysql-connector-java.jar
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.6</version> 
	<scope>runtime</scope>  
</dependency>

依赖传递规则

maven针对groupid和artifactId相同,version不同的jar包,处理依赖传递依从两个规则:

  1. 如果级别相同,就使用最先声明的版本,即最先声明原则。
  2. 如果级别不同,就用级数最少的那个jar版本,即最短路径原则。

举个例子,现在有如下的依赖关系:

    a--> log4j-1.3--> common-log.1.1

    b--> log4j-1.4

    b--> common-log.2

    c--> a.jar, b.jar

那么c最终使用的是哪个版本的log4j,哪个版本的common-log呢?根据上边的两条规则,

log4j使用的是log4j-1.3(同级取先/最先声明),
common-log使用的是common-log.2(不同级就用级数最少的那个jar版本/最短路径)。

另外需要注意的是,test级别的jar包是不参与传递的。

maven官网文档链接

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

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

相关文章

HTTP协议说明

1.用于HTTP协议交互的信息被称为HTTP报文。请求端&#xff08;客户端&#xff09;的HTTP报文叫做请求报文&#xff0c;响应端&#xff08;服务器端&#xff09;的叫做响应报文。HTTP 报文本身是由多行&#xff08;用 CRLF 作换行符&#xff09;数据构成的字符串文本。 HTTP报文…

[Linux C] signal 的使用

前言&#xff1a; signal 是一种通信机制&#xff0c;可以跨进程发送&#xff0c;可以同进程跨线程发送&#xff0c;可以不同进程向指定线程发送。 信号的创建有两套api&#xff0c;一个是signal&#xff0c;一个是sigaction&#xff0c;signal缺陷很多&#xff0c;比如没有提…

亚马逊美国站衣物收纳商品合规标准是什么?如何办理?

随着秋季的来临&#xff0c;不少人翻箱倒柜地寻找换季用品。相信现在很多人都和小编一样&#xff0c;出门时打算找个外套穿上&#xff0c;但想到要去柜子里翻半天&#xff0c;就立刻打消了想要出门的念头。 但当翻箱倒柜地找到了换季用品&#xff0c;却又要一件一件地把翻出来…

Variations-of-SFANet-for-Crowd-Counting可视化代码

前文对Variations-of-SFANet-for-Crowd-Counting做了一点基础梳理&#xff0c;链接如下&#xff1a;Variations-of-SFANet-for-Crowd-Counting记录-CSDN博客 本次对其中两个可视化代码进行梳理 1.Visualization_ShanghaiTech.ipynb 不太习惯用jupyter notebook, 这里改成了p…

spring解决后端显示时区的问题

spring解决后端显示时区的问题 出现的问题&#xff1a; 数据库中的数据&#xff1a; 解决方法 spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: Asia/Shanghai

vscode前端必备插件

安装插件的位置如下&#xff1a; 1、Chinese (Simplified) Language Pack 中文简体插件 2、Vetur Vue官方钦定插件&#xff0c;包括&#xff1a;语法高亮&#xff0c;智能提示&#xff0c;错误提示&#xff0c;格式化&#xff0c;自动补全等等 3、ESLint 语法检查工具&#…

客户端性能测试基础知识

目录 1、客户端性能 1.1、客户端性能基础知识 2、客户端性能工具介绍与环境搭建 2.1.1、perfdog的使用 2.1.2、renderdoc的使用 1、客户端性能 1.1、客户端性能基础知识 客户端性能知识这里对2D和3D类游戏进行展开进行&#xff0c;讲述的有内存、CPU、GPU、帧率这几个模块…

云栖大会十五年:开放创新,未来愿景

时光荏苒&#xff0c;转眼间云栖大会已经走过了十五个年头&#xff0c;这一场中国云计算行业的盛会已经成为业内不可或缺的一部分。在这个特殊的时刻&#xff0c;我想分享一些对未来云栖大会的期待与建议&#xff0c;希望这个盛会能够继续推动云计算领域的创新和发展。 云栖大会…

数据库深入浅出,数据库介绍,SQL介绍,DDL、DML、DQL、TCL介绍

一、基础知识&#xff1a; 1.数据库基础知识 数据(Data)&#xff1a;文本信息(字母、数字、符号等)、音频、视频、图片等&#xff1b; 数据库(DataBase)&#xff1a;存储数据的仓库&#xff0c;本质文件&#xff0c;以文件的形式将数据保存到电脑磁盘中 数据库管理系统(DBMS)&…

LSF 概览——了解 LSF 是如何满足您的作业要求,并找到最佳资源来运行该作业的

LSF 概览 了解 LSF 是如何满足您的作业要求&#xff0c;并找到最佳资源来运行该作业的。 IBM Spectrum LSF ("LSF", load sharing facility 的简称) 软件是行业领先的企业级软件。LSF 将工作分散在现有的各种 IT 资源中&#xff0c;以创建共享的&#xff0c;可扩展…

国内内卷太严重,还不考虑一下在海外接单?那这几个平台你知道吗?

作为一个程序员&#xff0c;在平台上接单赚点外快是再正常不过的事情了&#xff0c;但是现今国内各个平台都内卷比较严重&#xff0c;你是否考虑过去“外面的世界”看看&#xff1f; 如果想过&#xff0c;那么这几个外国的接单平台你都知道吗&#xff1f; 接下来就和我一起来看…

vmWare虚拟机扩容及pip国内镜像源

扩展虚拟机容量 打开虚拟机.sudo apt-get install gparted pip镜像源 pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple-i https://pypi.douban.com/simple-i https:// mirrors.aliyun.com/pypi/simple

Linux CentOS7 shell

学好linux&#xff0c;首先要深入理解shell。 shell俗称壳&#xff0c;它包裹在内核的外面&#xff0c;是用户命令的翻译官。 作用&#xff1a;接收用户的命令&#xff0c;翻译后(处理一下)交给Linux内核处理。 用户执行命令 -> shell -> 内核 -> CPU -> 内核 -…

C/C++笔试易错与高频题型图解知识点(三)——数据结构部分(持续更新中)

目录 1. 排序 1.1 冒泡排序的改进 2. 二叉树 2.1 二叉树的性质 3. 栈 & 队列 3.1 循环队列 3.2 链式队列 4. 平衡二叉搜索树——AVL树、红黑树 5 优先级队列&#xff08;堆&#xff09; 1. 排序 1.1 冒泡排序的改进 下面的排序方法中&#xff0c;关键字比较次数与记录的初…

LeetCode 996.正方形数组的数目

和上一道状压的区别在于我们要去重一下~ 思路都是和上一篇博客是一样的&#xff0c;感兴趣的同学可以看一下 const int N 15; int dp[1<<N][N]; int n; vector<int>nums1;bool check(int x){int tem sqrt(x);if(tem*temx)return 1;return 0; }int dfs(int u,in…

比较Excel中的两列目录编号是否一致

使用java代码比较excel中两列是否有包含关系&#xff0c;若有包含关系&#xff0c;核对编号是否一致。 excel数据样例如下&#xff1a; package com.itownet.hg;import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import j…

网站如何改成HTTPS访问

在今天的互联网环境中&#xff0c;将网站更改成HTTPS访问已经成为了一种标准做法。HTTPS不仅有助于提高网站的安全性&#xff0c;还可以提高搜索引擎排名&#xff0c;并增强用户信任。因此&#xff0c;转换为HTTPS是一个重要的举措&#xff0c;无论您拥有个人博客、电子商务网站…

如何将你的PC电脑数据迁移到Mac电脑?使用“迁移助理”从 PC 传输到 Mac的具体操作教程

有的小伙伴因为某一项工作或者其它原因由Windows电脑换成了Mac电脑&#xff0c;但是数据和文件都在原先的Windows电脑上&#xff0c;不知道怎么传输。接下来小编就为大家介绍使用“迁移助理”将你的通讯录、日历、电子邮件帐户等内容从 Windows PC 传输到 Mac 上的相应位置。 在…

PicoDiagnostics (NVH设备软件)-Mongoose识别不了VIN码

如果Mongoose J2534诊断线识别不到车辆的VIN码&#xff0c;通常在PD软件中会像下图那样提示。 遇到这种情况&#xff0c;首先确保你的电脑是否已经安装J2534驱动&#xff1a;打开【设备管理器】&#xff0c;如果你将示波器和Mongoose J2534诊断线连接到电脑&#xff0c;【设备管…

EtherCAT FP介绍系列文章—RAS

RAS扩展功能包是acontis公司在EC-Master EtherCAT主站基础上提供的一套基于TCP/IP的客户端/服务器架构的Remote API。Remote API旨在远程API提供了一个接口&#xff0c;解决在操作系统中当第二个进程&#xff08;例如OPC服务器&#xff09;可能访问EtherCAT总线的数据或在Ether…