SpringBoot + MybatisPlus

SpringBoot + MybatisPlus 整合记录

  • 1. 硬件软件基本信息
  • 2. 相关链接
  • 3. 通过idea快速生成一个Springboot项目
  • 4. 启动报错问题解决
    • 问题一:Springboot启动的时候报错提示 “没有符合条件的Bean关于Mapper类型”
    • 问题二:启动的时候提示需要一个Bean,但是发现了两个Bean
    • 问题三:没有找到对应的statement

1. 硬件软件基本信息

2. 相关链接

JDK1.8.0_361下载地址
Maven-3.9.6 下载地址
Mybatis-Plus 官方文档

3. 通过idea快速生成一个Springboot项目

大致快速生成springBoot项目的有两种方法
方式一:使用maven生成
方式二:使用springBoot生成
我这里直接选用第二种,第一种可以 点击链接 学习学习
注意事项:
如果想生成 JDK8 的项目但是下拉没有这个版本:
那是因为 Spring2.X 版本在2023年11月24日停止维护了,因此创建 Spring 项目时不再有 2.X 版本的选项,只能从 3.1.X 版本开始选择,而 Spring3.X 版本不支持 JDK8,JDK11,最低支持JDK17,因此 JDK11 也无法选择了。
所以需要替换服务地址为阿里云的就可以了
初始地址Server URL:http://start.springboot.io/
替换地址Server URL:https://start.aliyun.com/
在这里插入图片描述
点击下一步然后选择需要初始化的依赖了,一般就spring web,lombok等等,其他的就基本上需要啥就自己添加上,一般还有mysql,mybatis,不过我们有mybatis-plus,就不需要mybatis的依赖了
最后点击create就可以完成一个Springboot项目的创建了
在这里插入图片描述
目录结构
这里我简单的创建了Controller,Service,Mapper等目录,结构如下
在这里插入图片描述
Controller 代码如下

package com.fan.sd.demos.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fan.sd.demos.VO.TestInfo;
import com.fan.sd.demos.service.ITestInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping(value = "/testInfo")
public class TestInfoController {@Autowiredpublic ITestInfoService iTestInfoService;@PostMapping("getTestInfo")public TestInfo getTestInfo() {// 使用Wrapper进行快速查询// LambdaQueryWrapper<TestInfo> queryWrapper = new LambdaQueryWrapper<>();// queryWrapper.eq(TestInfo::getId,"1");// return iTestInfoService.getOne(queryWrapper);return iTestInfoService.selectById1("1");}}

接口类信息如下
接口类要继承 IService 类

package com.fan.sd.demos.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.fan.sd.demos.VO.TestInfo;public interface ITestInfoService extends IService<TestInfo> {/*** 查询测试信息*/TestInfo selectById1(String id);/*** 插入测试信息*/void insertTestInfo(TestInfo testInfo);/*** 删除测试信息*/void deleteTestInfo(Long id);/*** 修改测试信息*/void updateTestInfo(TestInfo testInfo);
}

实现类信息如下
这里实现类要实现接口类,然后继承Mybatis-Plus的 ServiceImpl 类

package com.fan.sd.demos.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fan.sd.demos.VO.TestInfo;
import com.fan.sd.demos.mapper.TestInfoMapper;
import com.fan.sd.demos.service.ITestInfoService;
import org.springframework.stereotype.Service;@Service
public class TestInfoServiceImp extends ServiceImpl<TestInfoMapper, TestInfo> implements ITestInfoService {@Overridepublic TestInfo selectById1(String id) {return baseMapper.selectById1(id);}@Overridepublic void insertTestInfo(TestInfo testInfo) {baseMapper.insert(testInfo);}@Overridepublic void deleteTestInfo(Long id) {baseMapper.deleteById(id);}@Overridepublic void updateTestInfo(TestInfo testInfo) {baseMapper.updateById(testInfo);}
}

mapper类信息如下
继承mybatisPlus的 BaseMapper 类就可以了

package com.fan.sd.demos.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fan.sd.demos.VO.TestInfo;public interface TestInfoMapper extends BaseMapper<TestInfo> {TestInfo selectById1(String id);}

mapper.xml代码如下
注意一下 namespace 和 Id 就可以了,不过现在有MybatisCodeHelpPro插件,基本上没有对应不上的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fan.sd.demos.mapper.TestInfoMapper"><select id="selectById1" resultType="com.fan.sd.demos.VO.TestInfo">select * from test_info_table where id = #{id}</select></mapper>

4. 启动报错问题解决

问题一:Springboot启动的时候报错提示 “没有符合条件的Bean关于Mapper类型”

在这里插入图片描述
这是因为启动的时候没有扫描对应的 Mapper 文件,所以没有生成对应的 bean 在 spring 容器中管理
我们只需要在启动类上加上注解 @MaaperSacn(“路径”)
在这里插入图片描述

问题二:启动的时候提示需要一个Bean,但是发现了两个Bean

在这里插入图片描述
我们进入Controller看看,鼠标移上去,很有意思的提示,@autowired找到两个Bean,但是在整个项目中ITestInfoService是接口类,而TestInfoServiceImpl是其实现类,
在这里插入图片描述
这是由于MapperScan的路径设置不当(属于强行承上启下了),将 MapperScan 的搜索范围扩大了,导致项目下所有包的接口都创建了一个实现类,因此在使用 @Autowired 后,对Service层的依赖注入就会找到两个Bean(一个Service接口本身,一个Service接口实现类)。
所以我们把Mapper扫描的配置路径写的颗粒度更细一点,就可以解决了
在这里插入图片描述

问题三:没有找到对应的statement

刚刚通过配置 MapperScan 扫描,解决了 mapper 没有生成bean在 Spring 容器中管理,现在成功启动,但是调用 mapper 里面的方法的时候又报这个错,网上检查什么 namespace 啊,检查 id 什么之类的,现在都是有插件帮我们检查好了,什么不对应的一红就知道了,所以这些也没必要检查。
在这里插入图片描述
这里主要的原因有两个
第一个原因:
我放的xml的目录位置问题,正常来说存放在 Resources/mapper/ *.xml 路径下,但是我们的项目基本上都是多模块项目,为了方便管理对应的 mapper 文件,我都是喜欢放在 mapper/xml/ *.xml 路径下面。所以这里需要有个对应的配置,具体配置如下

# 服务端口
server:port: 8080
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: root123456url: jdbc:mysql://localhost:3306/SD_DB?useSSL=false&serverTimezone=Asia/Shanghai
mybatis-plus:# 指定 MyBatis Mapper 对应的 XML 文件位置mapper-locations: classpath*:com/fan/sd/demos/**/xml/*.xmlconfiguration:# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 返回类型为Map,显示null对应的字段call-setters-on-nulls: truejdbc-type-for-null: 'null'

第二个原因:
可以查看一下生成的 target 文件目录,然后会发现根本都没有xml目录以及对应的mapper.xml文件,那肯定会报这个问题的。
在这里插入图片描述
主要原因是我们启动项目或者打包项目的时候,默认只会编译src/main/java下面的class文件,对应的一些xml等静态文件是不会打包编译的,所以我们这里就需要在pom文件里面设置一下
具体配置信息如下,最后Maven刷新一下,就可以正常编译了

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.fan</groupId><artifactId>SD</artifactId><version>0.0.1-SNAPSHOT</version><name>SD</name><description>SD</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version><djl.version>0.20.0</djl.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web-services</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- 在 <dependencies> 区域内添加 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version> <!-- 替换为最新版本 --></dependency><!-- druid数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.fan.sd.SdApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins><!-- 项目打包时会将java目录中的*.xml文件也进行打包 --><resources><resource><directory>src/main/resources</directory><filtering>false</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include><include>**/*.json</include><include>**/*.ftl</include></includes><filtering>false</filtering></resource></resources></build>
</project>

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

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

相关文章

大数据框架总结(全)

☔️ 大数据框架总结&#xff08;全&#xff09; 关注“大数据领航员”&#xff0c;在公众号号中回复关键字【大数据面试资料】&#xff0c;即可可获取2024最新大数据面试资料的pdf文件 一. Hadoop HDFS读流程和写流程 HDFS写数据流程 &#xff08;1&#xff09;客户端通过…

Aws CodeCommit代码仓储库

1 创建IAM用户 IAM创建admin用户&#xff0c;增加AWSCodeCommitFullAccess权限 2 创建存储库 CodePipeline -> CodeCommit -> 存储库 创建存储库 3 SSH 1) window环境 3.1.1 上载SSH公有秘钥 生成SSH秘钥ID 3.1.2 编辑本地 ~/.ssh 目录中名为“config”的 SSH 配置文…

java:程序包javax. servLet不存在

一.原因 1.项目Tomcat 服务器依赖未导入 2.项目的 SDK 版本选择错误 二.解决方法 方案一&#xff1a; 1.选择项目结构选项 2.导入Tomcat依赖 把tomcat里面的【jsp-api.jar】和【servlet-api.jar】这两个包导入 方案二&#xff1a; 1.选择项目结构选项 2.选择自己的jdk版本…

Git 小白入门到进阶—(基本概念和常用命令)

一.了解 Git 基本概念和常用命令的作用 (理论) 基本概念 1、工作区 包含.git文件夹的目录&#xff0c;主要用存放开发的代码2、仓库 分为本地仓库和远程仓库&#xff0c;本地仓库是自己电脑上的git仓库(.git文件夹);远程仓库是在远程服务器上的git仓库git文件夹无需我们进行操…

收银系统源码--零售连锁店铺如何选择适合自己的收银系统?

如果你现在还认为小便利店只要简单的收款&#xff0c;只有大型的连锁便利店才需要收银软件和管理软件&#xff0c;那你就错了&#xff0c;连锁品牌的便利店是必须要用到专业的收银软件&#xff0c;但是小微型的便利店更应该要用专门的软件&#xff0c; 在各行各业逐步革新互联网…

webpack5基础和开发模式配置

运行环境 nodejs16 webpack基础 webpack打包输出的文件是bundle 打包就是编译组合 webpack本身功能 仅能编译js文件 开始使用 基本配置 五大核心概念 准备webpack配置文件 1.在根目录 2.命名为webpack.config.js 开发模式介绍 处理样式资源 处理css样式资源文件…

Oracle 证书的重要性

随着信息技术的飞速发展&#xff0c;数据库管理已成为企业运营中不可或缺的一部分。Oracle作为全球领先的数据库管理系统提供商&#xff0c;其Oracle Certified Professional&#xff08;OCP&#xff09;认证已成为数据库管理员和开发人员追求的专业认证之一。本文将深入探讨Or…

八国多语言微盘微交易所系统源码 单控点控 K线完好

安装环境linux NGMySQL5.6PHP7.2&#xff08;函数全删&#xff09;pm2管理器&#xff08;node版本选择v12.20.0&#xff09; config/ database.php 修改数据库链接 设置运行目录 public 伪静态thinkphp

设计模式8——原型模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 原型模式&#xff08;Prototyp…

大模型日报|今日必读的 5 篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Meta 领衔&#xff1a;一文读懂视觉语言建模&#xff08;VLM&#xff09; 人们正在尝试将大型语言模型&#xff08;LLMs&#xff09;扩展到视觉领域。从可以引导我们穿越陌生环境的视觉助手&#xff0c;到仅使用高…

Linux环境基础开发工具使用

一.Linux第一个小程序&#xff0d;进度条 1.版本一&#xff1a; 1: process.c ? ? 2: process,h ? ?? 3: main.c ? ? ?? buffers 1…

LeetCode题练习与总结:有序链表转换二叉搜索树--109

一、题目描述 给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为平衡二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0&#xff0c;-3,9&#xff0c;-10,null,5]&#xff0c;它表…

OpenHarmony迎来首个互联网技术统一标准,鸿蒙OS生态走向如何?

开源三年半&#xff0c;OpenHarmony(以下简称“开源鸿蒙”)迎来了新进展。在5月25日召开的「OpenHarmony开发者大会」上&#xff0c;鸿蒙官宣了开源鸿蒙设备统一互联技术标准。 一直以来&#xff0c;各行业品牌操作系统相互独立、难以协同,成为其互联互通的痛点。为进一步解决…

3d火灾救援模拟仿真培训软件复用性强

消防VR安全逃生体验系统是深圳VR公司华锐视点引入了前沿的VR虚拟现实、web3d开发和多媒体交互技术&#xff0c;为用户打造了一个逼真的火灾现场应急逃生模拟演练环境。 相比传统的消防逃生模拟演练&#xff0c;消防VR安全逃生体验系统包含知识讲解和模拟实训演练&#xff0c;体…

前端自动将 HTTP 请求升级为 HTTPS 请求

前端将HTTP请求升级为HTTPS请求有两种方式&#xff1a; 一、index.html 中插入meta 直接在首页 index.html 的 head 中加入一条 meta 即可&#xff0c;如下所示&#xff1a; <meta http-equiv"Content-Security-Policy" content"upgrade-insecure-requests&…

Python图像处理库全面详细解析

目录 引言 PIL和Pillow&#xff1a;基础但强大的图像处理 PIL到Pillow的演变 功能亮点 实际应用案例 Pillow的适用场景 结论 ​编辑 OpenCV&#xff1a;计算机视觉的瑞士军刀 OpenCV的核心特点 功能亮点 实际应用案例 OpenCV的适用场景 结论 ​编辑 Scikit-Imag…

Linux echo命令(在终端输出文本)

文章目录 Linux Echo命令深度解析简介命令语法常见选项- -n&#xff1a;不输出行尾的换行符&#xff0c;这意味着输出后不会换到下一行。- -e&#xff1a;启用反斜杠转义的解释&#xff0c;允许使用特殊字符。- -E&#xff1a;禁用反斜杠转义的解释&#xff08;默认选项&#x…

【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(1)

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; C进阶 &#x1f389;其它专栏&#xff1a; C初阶 | Linux | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解 哈希函数与哈希 之 闭散列的线性探测解决哈希冲突 的相关内容。 如…

【论文阅读】Rank-DETR(NIPS‘23)

paper:https://arxiv.org/abs/2310.08854 code:https://github.com/LeapLabTHU/Rank-DETR

conda 环境找不到 libnsl.so.1

安装prokka后运行报错 perl: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory 通过conda list 可以看到 有libsnl 2.00版本&#xff0c;通过修改软链接方式进行欺骗