第一个MyBatis程序

news2024/9/23 17:11:16

目录

一、新建项目 

二、设置数据库和MyBatis的配置 

🍑配置数据库的连接信息

🍑配置MyBatis XML存放位置和命名规则

三、MyBatis实现查询操作

🍎MyBatis的组成

🍎使用MyBatis实现查询功能 

🍎SpringBoot单元测试查询是否成功

1、借助IDEA生成对应的测试文件 

2、设置当前的测试环境为Spring Boot,并且注入要测试的类——进行验证 

碎碎念🔔🔔🔔🔔


一、新建项目 

首先我们打开IDEA,新建一个SpringMVC项目。

 

 项目创建后,接下来和我们之前对springmvc项目的操作是一样的。

 

 如下图所示:

为啥会报错呢?

当然报错呀!你得告诉程序要连哪个数据库吧?

二、设置数据库和MyBatis的配置 

🍑配置数据库的连接信息

这里的很多内容是固定的

# 数据库连接配置
Spring:
  datasource:
    url: jdbc:mysql://localhost:3306/你要连接的数据库名?characterEncoding=utf8&useSSL=false
    username: 用户名
    password: 自己的密码
    driver-class-name: com.mysql.cj.jdbc.Driver #只要你数据库用的是mysql这个是固定的

🍑配置MyBatis XML存放位置和命名规则

# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
mybatis:
  mapper-locations: classpath:mapper/**Mapper.xml 
#注意这里的mapper名字是可以你自己进行设定的,但一定要和你的项目路径对应起来

三、MyBatis实现查询操作

在用MyBatis进行增删改查之前,首先我们要明白MyBatis的组成,MyBatis执行流程——怎样写程序才符合MyBatis的要求。

🍎MyBatis的组成

先来回顾一下我们软件的分层

首先我们要明白

 MyBatis 的 操作模式,包含两个部分:

  1. Interface(方法定义)
  2. xxx.xml

注意!这里是接口,不是类。
这个interface 中 会加一个注解,它是来自于mybatis里面的注解 Mapper。

加了这个注解之后,表示我们当前的这个 mybatis 类 所的事情,就是 实现 对象的映射。
这个时候,帮我们的方法名字 定义到 interface 里面。
我们 interface 里面的方法,是不能有实现的,是一个抽象方法。

思考一下:
假设,我们要根据用户ID 去查询一个用户信息。
那我们定义一个方法名有什么用?又没有具体实现,怎么可能会实现查询功能??
答案显而易见是不行的!!!
'这个时候,我们就需要另一个东西:xml 文件
mybatis 有点奇怪,感觉就像是 “怕脑门” 想出来的方法 。
就是 要想操作数据库,必须得有两个文件。
第一个,它是Java中的 一个普通接口,在接口中,定义方法名称。
定义方法名称之后,就该实现方法了。
但是接口中方法不能有实体,需要映射到对应的 xml 文件中来帮他完成上述工作。
当然,在xml文件中,也需要表明它是那个方法的映射。
这就是第二个文件 xml。


根据我们前面讲的映射:就是 把业务代码 转换成 SQL 语句。
也就是说我们 定义在接口中的方法,是为了声明该方法 对数据 进行 何种操作。
具体的实现 已经通过某种映射关系,映射到 xml 文件中,
我们需要在 xml 文件中,编写 对应功能的 SQL 语句,就可以了。


有的人可能会疑问:
我们可不可以将 SQL 语句 写在代码中,就像 jdbc 编程 一样。
答案:可以,但是!SQL 只能是 String 类型的,如果SQL写错,它是不会报错的。
这就很容易翻车。
所以,mybatis 的设计师 思考一会,这样的话要不直接把 SQL 写在 xml 里面?
于是一拍大腿,就这么决定了。
在xml里面,只需要配置 我们要是实现的 interface 是谁,我要实现的 SQL 是谁。
OK ,这样一配置就完了。
这两个合在一起,最终生成 mybatis 中能执行的SQL。
通过这个SQL语句,去操作数据库。
将 操作数据库得到的结果,返回给 服务层。
服务层,再返回给 controller(控制层)。
控制层,再把结果交给用户。
这样 就完成了 一次交互。

所以,我们讲 mybatis 的 操作模式,就是在讲下图中的两个文件。
————————————————

小结: 

理论和思想了解完了,接下来就是实战了。

 

首先根据我们数据库的表,在我们的程序中创建想对应的实体类——我们的MyBatis是ORM框架,我们的程序对象与关系数据库数据之间有响应的映射关系

  • 一个数据库中的数据表对应我们程序中的一个实体类
  • 数据表中的一行数据对应该实体类的一个实例化对象
  • 该数据表中的各个属性对应该实体类的成员变量(属性)
     

 

🍎使用MyBatis实现查询功能 

好了,到现在为止,MyBatis基础的查询操作就算完成了。嘿嘿,其实MyBatis真正意义上的执行就两步:MyBatis接口、该接口所对应的xml文件。只是我们上面花了很多功夫来讲了MyBatis的规范,只要你按照MyBatis人家给的规范要求来操作数据库,其实还是很简单的。

那么查询操作既然写完了,我们怎么知道程序是否查询成功了呢?

🍎SpringBoot单元测试查询是否成功

这时,我们的Spring Boot 单元测试就有了用武之地。

单元测试(unit testing),是指对软件(项目)中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试。

在我们当前项目中,最小的测试单元就是方法,所谓单元测试就是看要测试的方法是否返回了预期的值。

注意这里虽然也叫测试,但单元测试一般是我们开发人员进行的。测试人员一般进行的都是功能行测试,看产品经理提的某个需求是否实现,是一种集合测试。

1、借助IDEA生成对应的测试文件 

 然后我们要测试的代码所对应的单元测试代码就生成了

2、设置当前的测试环境为Spring Boot,并且注入要测试的类——进行验证 

 执行我们的测试代码。

碎碎念🔔🔔🔔🔔

一开始我在执行的时候,明明各项配置的都对,但一执行就显示:


 下面的报错信息显示:
Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

 

然后吧,一直找错、一直改,忙活了大半天还是没有什么头绪。

直到不经意见给我们上面的密码的外层,加了一对半角双引号,结果还就真执行成功了。

无奈,好奇怪...

 

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

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

相关文章

TF卡格式化了怎么办?tf卡数据恢复,看这3个方法

现在手机存储卡都很普及,TF卡是最常见的存储卡之一。但是你知道吗?TF卡也会有问题,比如出现误删数据,或者把数据格式化。因为手机内存有限,我们经常会把 TF卡设置为默认的最大空间,这样就可能会出现存储空间…

Java: 字符串indexOf() /substring()/replace() 的使用

需要做的: 获取如下图响应信息html页面中的 fec7f1e4-30e0-41d1-9417-bb4829be51dc 值 一.具体思路: (1)字符串查找 indexOf()其实就是在字符串中查找其子串第一次出现的位置,如果没有找到该子串,则返回-1 四种用…

三面“有赞”Java岗斩获offer:Spring+JVM+并发锁+分布式+算法

年末离职,年初为面试也筹备挺长一段时间,找了不少复习资料,刷了很多题在网上投了很多简历最终面试了有赞,还有幸拿到offer! 本人两年Java开发,本科毕业,计算机专业,勤学好问、积极上…

BM(Boyer-Moore) 算法详解

BM算法(Boyer-Moore) BM算法也叫做精确字符集算法,它是一种从右往左比较(后往前),同时也应用到了两种规则坏字符、好后缀规则去计算我们移动的偏移量的算法。 坏字符规则 BM 算法是从后往前进行比较,此时我们发现比…

ArcGIS基础:不同方法修改栅格数据像元值

【1】:根据值修改栅格值 原始数据如下所示: 是一个栅格数据,分为三种不同的颜色,三种颜色代表三个不同的数值,如下所示: 如下所示,为1、2、3三个不同值。 下面将栅格值为1 的数据的数值替换…

5年测试,面试结束后被HR怼了..(心塞)

前一阵子向朋友诉苦,我在参加字节跳动面试的时候被面试官怼得哑口无言,场面让我一度十分尴尬。印象最深的就是下面几个问题: 根据你以前的工作经验和学习到的测试技术,说说你对质量保证的理解?非关系型数据库和关系型数…

【免杀前置课——Windows编程】十五、网络编程——C/S,B/S模式分别是什么?WinSocket、Socket传输的定义和其特点、实现简易通信(附代码)

网络编程网络编程C/S:客户端/服务器模式:B/S:浏览器/服务器架构模式。WinSocket:Socket传输的定义和其特点实现简易通信服务器端客户端网络编程 网络分为C/S,B/S两种模式。 C/S:客户端/服务器模式: 服务器端: 首先服务器先启动,并根据客户端请求做出相…

Pytest 的高级用法之插件开发

用过pytest的小伙伴应该都知道,pytest之所以功能强大,是因为pytest的插件非常的多。这是插件大多是pytest的使用者所开发的,今天咱们专门来聊聊如何去自己开发Pytest的插件。 一 pytest插件的介绍 pytest框架采用的是插件系统的模式来设计的…

安装VMware

大纲: 一、VMware简介 VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。 二、VMware摘要笔记 三、VMware安装步骤 1、将VMware Workstation 16 Pro解压后 双击运行第二个应用程序(player)进行…

精品基于springboot的线上跳蚤市场平台

《线上跳蚤市场平台》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术: 开发语言:Java 框架:springboot(ssm) 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库&a…

Android 中的权限

1、权限类型 Android 将权限分为不同的类型,包括安装时权限、运行时权限和特殊权限。每种权限类型都指明了当系统授予应用该权限后,应用可以访问的受限数据范围以及应用可以执行的受限操作范围。每项权限的保护级别取决于其类型。 1.1、安装时权限 安…

智慧农业发展,商业计划书撰写,商业模式,ppt亮点

目录 什么是商业模式 中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要_滚动新闻_中国政府网 第五篇 加快数字化发展 建设数字中国 第十五章 打造数字经济新优势 第十六章 加快数字社会建设步伐 第十七章 提高数字政府建设水平 第十八章 营造…

Linux下载安装 RabbitMQ​

压缩包:RabbitMQ-Linux版-Java文档类资源-CSDN下载 一、官网下载: 1、需要先下载RabbitMQ所需要的erl语言环境 官网地址:Downloads - Erlang/OTP 2、下载MQ 官网:Messaging that just works — RabbitMQgithub地址:…

一篇文章,教你彻底掌握接口测试!

Part 01、什么是接口测试 所谓接口,是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试,则是通过接口的不同情况下的输入,去对比输出,看看是否满足接口规范所规定的功能、安全以及…

【设计模式】外观模式(Facade Pattern)

外观模式属于结构型模式,主要解决客户程序访问复杂程序中的多个子程序而产生的高耦合度及高复杂度问题,根本目的在于简化接口的调用。例如我们去医院看病,可能要去挂号、门诊、划价、取药(子系统角色),这让…

Redis主从复制、哨兵模式、集群模式

文章目录一、Redis主从复制主从复制流程Redis主从复制的作用二、哨兵模式1、哨兵模式集群架构2、哨兵模式主要功能3、哨兵监控整个系统节点的过程4、主观下线5、客观下线6、master 选举7、故障迁移8、优点与缺点三、Cluster群集1、集群的作用2、Redis集群的数据分片四、实验一&…

Linux||使用vi编辑器按上下键输出字母

一、问题描述 在终端执行sudo命令时,系统提示“vboxuser is not in the sudoers file.This incident will be reported”,因此需要修改/etc/sudoers文件。 使用Linux自带的vi编辑器修改/etc/sudoers文件时候,按i键进入编辑模式。使用键盘上下…

SD-Branch多分支组网解决方案

一、多分支组网建设背景 多分支一般是指行政上由总部和分支单位组成,总部和各分支处在地域不同的区域;由于业务访问需要,组网要求“总部-分支”互联打通。多分支网络组网方案主要针对的是总分企业、金融网点、连锁酒店、连锁门店、商超地产、…

组合预测 | MATLAB实现基于BP-Adaboost强分类器多特征分类预测

组合预测 | MATLAB实现基于BP-Adaboost强分类器多特征分类预测 目录 组合预测 | MATLAB实现基于BP-Adaboost强分类器多特征分类预测预测效果基本介绍模型特性程序设计参考资料预测效果 基本介绍 MATLAB实现基于BP-Adaboost强分类器多特征分类预测。在集成学习-Boosting,Bagging…

如何建立公司网站?【公司网站建设】

现在很多实体公司企业都会做一个自己的公司网站,毕竟一个网站等同于一张在互联网中的名片,可以让更多客户了解到你。那么如何建立公司网站?流程步骤大概是什么?今天给大家简单讲解一下。 一、注册域名 这个域名是就是网址&#…