谷粒商城学习笔记-18-快速开发-配置测试微服务基本CRUD功能

文章目录

  • 一,product模块整合mybatis-plus
    • 1,引入依赖
    • 2,product启动类指定mapper所在包
    • 3,在配置文件配置数据库连接信息
    • 4,在配置文件中配置mapper.xml映射文件信息
  • 二,单元测试
    • 1,编写测试代码,执行单元测试
  • 三,错误记录
    • 1,单元测试失败初步排查
    • 2,缺失驱动类依赖

本节的主要内容是product模块整合mybatis-plus,并进行单元测试,测试微服务基本CRUD功能。

一,product模块整合mybatis-plus

1,引入依赖

使用mybatis-plus,需要引入依赖。这一步在上一节已经在common模块引入,这里只做记录,无需再次引入。

		<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency>

2,product启动类指定mapper所在包

mybatis会根据Mapper代码文件中定义的接口生成代理类,需要告知Mapper接口文件所在的包。

MapperScan的作用是在应用的配置类中指定一个或多个包,Spring将会自动查找这些包下所有的接口,并将它们注册为Spring Bean。

意味着在这些包中的所有标注了@Mapper的接口都会被自动识别和实例化,而无需在Spring的XML配置文件中显式声明每一个Mapper。

@MapperScan(basePackages = "com.atguigu.gulimall.product.dao")

在这里插入图片描述

3,在配置文件配置数据库连接信息

在这里插入图片描述

spring:datasource:username: rootpassword: rooturl: jdbc:mysql://192.168.56.10:3306/gulimall_pms

4,在配置文件中配置mapper.xml映射文件信息

在这里插入图片描述

mybatis-plus:mapper-locations: classpath*:/mapper/**/*.xmlglobal-config:db-config:id-type: auto

关于配置mapper-locations: classpath*:/mapper/**/*.xml的说明:

  • 这个配置声明的是mybatis映射文件的路径
  • classpath中的号表示除了扫描当前项目的类路径,还会扫描所以来的包的类路径

下面的配置将主键设定为自增主键,在调用接口保存数据时,主键如果不指定,会自增。

global-config:db-config:id-type: auto

二,单元测试

1,编写测试代码,执行单元测试

在test文件夹下的测试类中,加入如下测试代码:

	@Autowiredprivate BrandService brandService;@Testpublic void testSaveBrand() {BrandEntity brandEntity = new BrandEntity();brandEntity.setName("华为");brandService.save(brandEntity);}

在这里插入图片描述
测运行testSaveBrand方法,测试通过说明配置正确。

在这里插入图片描述

数据库中也能看到一条对应的数据,说明单元测试成功,符合预期。

在这里插入图片描述

三,错误记录

1,单元测试失败初步排查

单元测试没跑成功,报错信息如下:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'attrAttrgroupRelationController': Unsatisfied dependency expressed through field 'attrAttrgroupRelationService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'attrAttrgroupRelationService': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'attrAttrgroupRelationDao' defined in file [D:\ideaprojects\gulimall2024\gulimall-product\target\classes\com\atguigu\gulimall\product\dao\AttrAttrgroupRelationDao.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Unsatisfied dependency expressed through method 'sqlSessionFactory' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.RuntimeException: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader

看上面堆栈信息的最后面的信息, Factory method 'dataSource' threw exception,说明极有可能是数据库连接信息配置的有问题。

在这里插入图片描述

仔细检查配置文件,发现数据库url配置少了端口信息。

在这里插入图片描述

修改配置文件,重新执行单元测试,仍然失败。

2,缺失驱动类依赖

仔细看堆栈信息,发现有这样一行:Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Threa,没有驱动类,应该是少了MySQL Driver相关的依赖。

考虑到这个依赖是其他模块也需要的依赖,所以应该在common模块的pom.xml中声明依赖。

		<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>5.1.38</version></dependency>

在这里插入图片描述

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

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

相关文章

凯中精密:下一个正丹吗?

业绩预增超十倍&#xff01; 又一匹A股业绩黑马诞生——凯中精密 近期&#xff0c;凯中精密发布2024年上半年业绩预告&#xff0c;预计净利润增速高达1068%至1402%。 从23年的209.54%到24年Q1惊人的6885.78%&#xff0c;再到24年上半年的十倍增速&#xff0c;这条业绩黑马利润…

【python算法学习2】冒泡排序的写法

目的&#xff1a;学习冒泡排序的写法 1 定义 1.1百度百科 冒泡排序_百度百科在程序设计语言中&#xff0c;排序算法主要有冒泡排序、快速排序、选择排序以及计数排序等。冒泡排序&#xff08;Bubble Sort&#xff09;是最简单和最通用的排序方法&#xff0c;其基本思想是&…

设计模式 - 最简单最有趣的方式讲述

别名《我替你看Head First设计模式》 本文以故事的形式带你从0了解设计模式&#xff0c;在其中你仅仅是一名刚入职的实习生&#xff0c;在项目中摸爬滚打。&#xff08;以没有一行真正代码的形式&#xff0c;让你无压力趣味学习&#xff09; 设计模式 策略模式观察者模式装饰者…

springboot仪器校准系统-计算机毕业设计源码51504

摘 要 随着科技的不断发展。测量设备的准确性和可靠性对于各行各业都至关重要。仪器校准系统作为确保测量设备性能的重要手段&#xff0c;已成为工业生产、科学研究、质量控制等领域不可或缺的一部分。本文对仪器校准系统进行了概述&#xff0c;探讨了校准方法、流程、特点、应…

Apache防盗链、网页压缩、网页缓存

目录 网页压缩 类型 示例 动态添加模块操作步骤 重装Apache操作步骤 网页缓存 示例 操作步骤 隐藏版本信息 操作步骤 Apache防盗链 定义 原理 配置防盗链实验环境 实验环境 本地图片盗链示例 操作步骤 防盗链示例 操作步骤 网页压缩 网站的访问速度是由多个…

following a different leader because i am not the healthiest node

源代码 解决方案&#xff1a; 手动 patronictl failover 修改切换模式从高可靠模式改成高可用模式 patronictl edit-config-synchronous_mode: true synchronous_mode: false

透明加密软件哪个好?这5款好用的加密软件尽在你眼前!

数据安全和隐私保护已成为企业和个人不可忽视的重要问题。 透明加密技术以其无需用户额外操作即可实现文件的加密和解密&#xff0c;大大提高了数据处理的便捷性和安全性。 下面小编将为您介绍五款优质的透明加密软件&#xff0c;帮助您选择最适合自己的加密工具。 1. Pg32 …

超秒集物商城打造“私域流量新策略”用消费增值破解流量困局

消费增值模式是什么?在如今这个公域流量的竞争愈发激烈的时代,流量已成为企业竞争的关键,消费增值可以帮助企业在私域流量的海洋中乘风破浪? 一、消费增值模式的引入 消费增值模式不仅仅是一种商业模式,更是一种营销策略。它鼓励消费者在享受商品或服务的同时,通过消费行为获…

KEIL5 MDK的(官网)下载安装(Win11)

一、KEIL5 MDK下载 1、Keil官网下载&#xff1a;Keil Product Downloadshttps://www.keil.com/download/product/ 支持包和破解软件和V5编译器下载链接 链接&#xff1a;https://pan.baidu.com/s/1ery0Q3FAR8_bLLlPQHSFNg?pwd9pxf 提取码&#xff1a;9pxf 选择最新版本下载&…

打造高效能“园区企业服务平台”,让企业更好更快发展!

​近年来&#xff0c;随着我国经济的快速发展&#xff0c;各地产业园区建设如火如荼&#xff0c;成为区域经济的支柱&#xff0c;如果说园区是区域经济的支柱&#xff0c;企业则是园区的血液&#xff0c;给园区带来生命力&#xff0c;为园区发展提供着动力&#xff0c;各地政府…

electron + express 实现 vue 项目客户端部署

写在前面 作为一个前端程序员&#xff0c;如何实现从前端到客户端的跨越&#xff0c;可能是一个很难实现的事。但客户需求千奇百怪&#xff0c;偶尔遇到一个非要客户端的&#xff0c;如何应对&#xff1f; 那Electron可能真是你福音。具体它有哪些功能&#xff0c;可自行官网…

向日葵IT运维节丨解决三个关键问题,搞好企业IT运维

724运维节&#xff0c;是所有运维人的节日&#xff0c;贝锐向日葵也在这一天致敬所有需要7x24小时待命的运维人&#xff0c;将这一天定为“向日葵IT运维节”&#xff0c;为广大运维人带来大量专属福利&#xff01; 724这组数字&#xff0c;折射出运维人的日常&#xff0c;即7x2…

c++多态的定义和原理

目录 1、多态的定义和实现 1.多态的构成条件 2.虚函数 3.虚函数的重写(覆盖) 4.虚函数重写的两个例外 5.c11 override和final 6.重载&#xff0c;覆盖(重写)和隐藏(重定义) 2、抽象类 概念 接口继承和实现继承 3、多态的原理 1.虚函数表 2.多态的原理 4、多继承中的虚…

MessageBox与HubSpot:企业沟通与客户管理的双重利器

今天咱们来聊聊两个超实用的工具——MessageBox和HubSpot。它们就像是你的超级助手&#xff0c;让你和客户沟通起来更顺畅&#xff0c;管理起来也更轻松。 先说说MessageBox吧 想象一下&#xff0c;你正在忙着工作&#xff0c;突然客户发来个消息&#xff0c;你嗖的一下就收到…

常见网页问题解决

用edge浏览器打印功能时&#xff0c;出现瞬间或加载几秒后突然闪退情况&#xff0c;本来以为是浏览器出了问题&#xff0c;去重置设置也没有&#xff0c;后来又下载了Chrome浏览器&#xff0c;没想到还是一样&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;想着…

windows安装Docker Desktop及国内镜像

简介 Docker 是一个开源的应用容器引擎&#xff0c;它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。通过Docker工具&#xff0c;简化了应用的部署、配置和管理过程&#xff0c;提高…

2024年五款企业加密软件(企业加密软件排行最新)

关键是数字化时代&#xff0c;企业数据安全至关重要。一般来说信息技术快速发展&#xff0c;企业数据泄露风险上升。你知道的加密软件保护企业核心数据和商业机密&#xff0c;不可或缺。对我而言介绍几款企业加密软件&#xff0c;帮助选择适合需求的解决方案。 固信加密软件ht…

性价比高充电宝有哪些?充电宝十大最佳品牌大盘点!

在如今这个高度数字化的时代&#xff0c;我们的生活离不开各种电子设备&#xff0c;而充电宝作为保障电子设备续航的重要工具&#xff0c;其地位日益凸显。然而&#xff0c;面对市场上琳琅满目的充电宝品牌和产品&#xff0c;要挑选到一款性价比高的充电宝并非易事。在这篇盘点…

C++20中的指定初始化器(designated initializers)

指定初始化器(designated initializers, 指定初始值设定项)语法如下&#xff1a;C风格指定初始化器语法&#xff0c;初始化数据成员的一种便捷方式 T object { .des1 arg1, .des2 { arg2 } ... }; T object { .des1 arg1, .des2 { arg2 } ... }; 说明&#xff1a; 1.每个指…

2024做TEMU跨境电商,全托管/半托管模式怎么选?

如果说2023年&#xff0c;“全托管”是跨境圈的热词&#xff0c;那2024年一定少不了“半托管”。 自2024年1月&#xff0c;速卖通首次推出半托管模式后&#xff0c;引发了众跨境卖家的热议&#xff1b;而TEMU随后在3月也推出半托管模式&#xff0c;便迅速使得半托管这一模式开始…