Spring boot(maven) - Mybatis 超级入门版

前言:

通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。

正片

不要问我为什么这么做,复制粘贴并可知

简单介绍一下Mybatis是什么?

一款java连接数据库的框架

简单介绍一下Mybatis的起到的作用!

分为三块区域

第一区:java区

第二区:mybatis区

第三区:数据库区(简称Sql区)

mybatis是连接两端的桥梁,起到了翻译的作用,将java语言翻译成Sql可运行的语言,将Sql运行的结果返回经过处理,返回至java语言环境中

将两个不相关的语言联系在一起,就是mybatis的作用

mybaits如何发挥作用的

首先,需要添加两款核心依赖,一款辅助依赖和基础依赖

基础依赖:spring web

核心依赖:Mybatis Farmework,Mysql Driver

辅助依赖:Lombok

添加完依赖,启动,成功报错!

这个报错是良性的报错,没错,在这里你能看见良性报错和恶性报错,你能清晰看它为什么报错

#优化版
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver# url 选择对应的数据库映射url: jdbc:mysql://localhost:3306/romachen #最后一位为数据库名username: root    # 数据库账号password: 123456  # 数据库密码server:port: 8084

我们在springboot自带的配置文件中添加上面模板,修改数据库名即可

有人说,我没有自带的配置文件怎么版?新建一个application.yaml(不要打错了,打错会出bug)

添加依赖,注册mybatis,运行,一气合成

无报错

完整的代码目录

这是一个经典的CRUD模板

第一步:我们先创建一个实体类,用于接收数据库运行后返回的内容

package org.example.mybatis.entity;import lombok.Data;@Data
public class UserEntity {String username;String password;
}

第二步:创建mapper接口,用于mybatis对接sql

package org.example.mybatis.Mapper;import org.apache.ibatis.annotations.Mapper;
import org.example.mybatis.entity.UserEntity;@Mapper
public interface UserMapper {UserEntity UserByName(String username);}

第三步:创建Mybatis载体,xml

<?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="mapper层具体路径"></mapper>
<?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="org.example.mybatis.Mapper.UserMapper"><select id="selectByUsername" resultType="org.example.mybatis.entity.UserEntity">SELECT * from steel.user_test where username = #{username}</select>
</mapper>

id需要对应mapper层中的方法名UserByName,resulType的参数即实体类的路径

第四步:创建CRUD模板中的业务层

package org.example.mybatis.servlet;import org.example.mybatis.entity.UserEntity;public interface UserServlet {UserEntity UserByName(String username);}

第五步:创建业务实现

package org.example.mybatis.servlet.Imp;import jakarta.annotation.Resource;
import org.example.mybatis.Mapper.UserMapper;
import org.example.mybatis.entity.UserEntity;
import org.example.mybatis.servlet.UserServlet;
import org.springframework.stereotype.Service;@Service
public class userServletImp implements UserServlet {@ResourceUserMapper userMapper;@Overridepublic UserEntity UserByName(String username) {return userMapper.UserByName(username);}
}

第六步:创建控制类

@RestController
@RequestMapping("/user")
public class user {@AutowiredUserServlet userServlet;@GetMapping("/username")public String UserName(){UserEntity user = userServlet.UserByName("user");return "打印成功" + user;}
}

第七步:注册Mapper,在启动类中添加

@SpringBootApplication
@MapperScan(basePackages = "org.example.mybatis.Mapper")
public class MybatisApplication {public static void main(String[] args) {SpringApplication.run(MybatisApplication.class, args);}
}

mapper层路径,不需要具体到每个文件

第八步:运行!!!!!!!!!!!

然后我们就会报错

Invalid bound statement (not found): org.example.mybatis.Mapper.UserMapper.UserByName

我很讨厌这个报错,但是我知道这个报错是因为什么

是因为你的xml文件和javaMapper层没有对接成功,在SpringBoot这里多半是因为路径写错了

所以我们需要在配置文件中添加这么一句,让SpringBoot在启动的时自动扫描

classpath会自动扫描resource里的文件,然后我们只需要将以*.xml的形式全部导入,再运行

成功

这个报错我找了半天,最后也算是知道它为什么报错了

作者通过对

mapper-locations的认识

发现了问题所在,因为文件路径不一样导致的XML无法对接javaMApper

我们要确保Mapper的路径和Mapper.xml路径完全相同,包括名字

这个报错,妥妥的恶性报错

总结:想要避免

Invalid bound statement (not found):xxxx

第一个方法:保证Mapper路径和xml路径完全相同

第二个方法:通过yaml配置mapper-locations: classpath:xx/xxxx/mapper/*.xml

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

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

相关文章

清华大学新闻与传播学院沈阳团队出品的《DeepSeek:从入门到精通》104页PDF

前言 本机运行DeepSeek R1大模型文章如下&#xff1a; Windows电脑本地部署运行DeepSeek R1大模型&#xff08;基于Ollama和Chatbox&#xff09;【保姆级万字教程】在Windows计算机部署DeepSeek大模型&#xff0c;给在实验室无外网的同事们用&#xff08;基于Ollama和OpenWebUI…

kbengine服务器和 数据库 系统路径配置

一、服务器 系统路径配置 二、mysql5.7.44 系统路径配置 mysql 压缩包安装方式 解压压缩包&#xff0c;将解压路径加入 系统环境。 或者 系统变量新增 变量名&#xff1a;MYSQL_HOME 变量值&#xff1a;C:\MyPrograms\mysql-8.0.12-winx64修改系统变量的 path 变量&#xff…

性格测评小程序04题库管理

目录 1 创建数据源1.1 题库表1.2 选项表 2 搭建管理后台2.1 搭建题库功能2.2 搭建选项功能2.3 题库和选项联动 3 最终效果总结 我们现在性格测评的算法是通过40个题目来测评用户属于哪一个分类&#xff0c;为此后台需要有可以设置题目和选项的功能&#xff0c;本篇我们介绍一下…

Navicat导入海量Excel数据到数据库(简易介绍)

目录 前言正文 前言 此处主要作为科普帖进行记录 原先Java处理海量数据的导入时&#xff0c;由于接口超时&#xff0c;数据处理不过来&#xff0c;后续转为Navicat Navicat 是一款功能强大的数据库管理工具&#xff0c;支持多种数据库系统&#xff08;如 MySQL、PostgreSQL、…

sql难点

一、 假设你有一个查询&#xff0c;需要根据 id 是否为 null 来动态生成 SQL 条件&#xff1a; xml复制 <select id"getResources" resultType"Resource">SELECT * FROM resources<where><if test"id ! null">and id <!…

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;六级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1.下面代码的输出结果正确的是?(B) import json json_str [ "Alice", "girl", 17,"New York"] data json.loa…

Qwen2.5-Max:国内新一代 MoE 大模型的崛起!

通义千问 DeepSeek 才火没多久&#xff0c;国内又出现了一款可以比肩 DeepSeek 的 MoE 大模型——Qwen2.5-Max。这款大模型使用了超过 20 万亿 token 的预训练数据及精心设计的后训练方案进行训练&#xff0c;无疑开启了 AI 的新时代。 Qwen2.5-Max Qwen2.5-Max Qwen&#xff0…

把 DeepSeek1.5b 部署在显卡小于4G的电脑上

这里写自定义目录标题 介绍准备安装 Ollama查看CUDA需要版本安装CudaToolkit检查Cuda是否装好二、设置Ollama环境变量三、验证是否跑在GPU上ollama如何导入本地下载的模型安装及配置docker安装open-webui启动open-webui开始对话介绍 Deepseek1.5b能够运行在只用cpu和gpu内存小…

FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )

目录 前言 一. 设计流程 1.1 需求分析 1.2 方案设计 1.3 PWM解析 二. 实现流程 2.1 确定时间单位和精度 2.2 定义参数和寄存器 2.3 实现计数器逻辑 2.4 控制 LED 状态 三. 整体流程 3.1 全部代码 3.2 代码逻辑 1. 参数定义 2. 分级计数 3. 状态切换 4. LED 输…

日常知识点之面试后反思裸写string类

1&#xff1a;实现一个字符串类。 简单汇总 最简单的方案&#xff0c;使用一个字符串指针&#xff0c;以及实际字符串长度即可。 参考stl的实现&#xff0c;为了提升string的性能&#xff0c;实际上单纯的字符串指针和实际长度是不够了&#xff0c;如上&#xff0c;有优化方案…

用AI绘制CAD气温曲线图

此文章视频讲解地址 https://www.bilibili.com/video/BV1JtKjenEhF 需求 根据气温的JSON数据&#xff0c;用AI自动生成CAD格式的气温曲线DWG图 数据准备 用deepseek获取了北京市最近一个月的气温json数据 AI对话 首先进入唯杰地图云端管理平台 选择与唯杰地图AI对话 需求描…

Web应用项目开发 ——Spring Boot邮件发送

一.邮件发送介绍 邮件发送是一个非常常见的功能&#xff0c;注册时的身份认证、重要通知发送等都会用到邮件发送。在现代的Web应用程序中&#xff0c;邮件发送功能是非常常见且重要的一部分&#xff0c;Spring Boot框架提供了简单且强大的方式来实现邮件发送功能。Spring中提供…

【STM32】通过L496的HAL库Flash建立FatFS文件系统(CubeMX自动配置R0.12C版本)

【STM32】通过L496的HAL库Flash建立FatFS文件系统&#xff08;CubeMX自动配置R0.12C版本&#xff09; 文章目录 FlashFlash地址写Flash地址读 FatFS文件系统配置FatFS移植驱动函数时间戳函数 文件操作函数工作区缓存文件挂载和格式化测试文件读写测试其他文件操作函数 测试附录…

机械臂运动学笔记(一):正向运动学

正向运动学指的是通过相邻关节间的转动和移动坐标&#xff0c;将末端的坐标计算出来。 反向运动学指的是已知机械臂末端的坐标&#xff0c;反算每个关节可能的转动和移动参数。 参考资料&#xff1a;4.机械臂几何法与DH表示法_哔哩哔哩_bilibili 一.任意连杆连接的变量定义&a…

Leetcode - 周赛435

目录 一、3442. 奇偶频次间的最大差值 I二、3443. K 次修改后的最大曼哈顿距离三、3444. 使数组包含目标值倍数的最少增量四、3445. 奇偶频次间的最大差值 II 一、3442. 奇偶频次间的最大差值 I 题目链接 本题使用数组统计字符串 s s s 中每个字符的出现次数&#xff0c;然后…

鸿蒙HarmonyOS NEXT开发:优化用户界面性能——组件复用(@Reusable装饰器)

文章目录 一、概述二、原理介绍三、使用规则四、复用类型详解1、标准型2、有限变化型2.1、类型1和类型2布局不同&#xff0c;业务逻辑不同2.2、类型1和类型2布局不同&#xff0c;但是很多业务逻辑公用 3、组合型4、全局型5、嵌套型 一、概述 组件复用是优化用户界面性能&#…

pyrender 渲染报错解决

pyrender渲染后&#xff0c;出来的图样子不对&#xff1a; 正确的图&#xff1a; 解决方法&#xff1a; pip install numpy1.26 下面的不是必须的&#xff1a; pip install pyrender0.1.45 os.environ["PYOPENGL_PLATFORM"] "egl" os.environ[EGL_DEVI…

CCFCSP第34次认证第一题——矩阵重塑(其一)

第34次认证第一题——矩阵重塑&#xff08;其一&#xff09; 官网链接 时间限制&#xff1a; 1.0 秒 空间限制&#xff1a; 512 MiB 相关文件&#xff1a; 题目目录&#xff08;样例文件&#xff09; 题目背景 矩阵&#xff08;二维&#xff09;的重塑&#xff08;reshap…

Neurlps2024论文解读|BERTs are Generative In-Context Learners-water-merged

论文标题 BERTs are Generative In-Context Learners BERTs 是生成式上下文学习器 论文链接 BERTs are Generative In-Context Learners论文下载 论文作者 David Samuel 内容简介 本文探讨了掩码语言模型&#xff08;如DeBERTa&#xff09;在上下文学习中的生成能力&…

深入理解Java对接DeepSeek

其实&#xff0c;整个对接过程很简单&#xff0c;就四步&#xff0c;获取key&#xff0c;找到接口文档&#xff0c;接口测试&#xff0c;代码对接。 1.获取 KEY https://platform.deepseek.com/transactions 直接付款就是了&#xff08;现在官网暂停充值2025年2月7日&#xf…