查企业网站有哪些,为什么上传网站模板网站上没有文字和图片,策划推广是做什么的,wordpress ./文章目录 一#xff0c;product模块整合mybatis-plus1#xff0c;引入依赖2#xff0c;product启动类指定mapper所在包3#xff0c;在配置文件配置数据库连接信息4#xff0c;在配置文件中配置mapper.xml映射文件信息 二#xff0c;单元测试1#xff0c;编写测试代码product模块整合mybatis-plus1引入依赖2product启动类指定mapper所在包3在配置文件配置数据库连接信息4在配置文件中配置mapper.xml映射文件信息 二单元测试1编写测试代码执行单元测试 三错误记录1单元测试失败初步排查2缺失驱动类依赖 本节的主要内容是product模块整合mybatis-plus并进行单元测试测试微服务基本CRUD功能。
一product模块整合mybatis-plus
1引入依赖
使用mybatis-plus需要引入依赖。这一步在上一节已经在common模块引入这里只做记录无需再次引入。 dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.2.0/version/dependency2product启动类指定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_pms4在配置文件中配置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中声明依赖。 dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scopeversion5.1.38/version/dependency