JavaWeb后端——Mybatis

概述

Mybatis:Java程序来对数据库进行操作,一款优秀的持久层框架,用于简化JDBC的开发

SSM:SpringMVC、Spring、Mybatis

 

快速入门 

步骤2:注意数据库连接的四要素

application.properties:springboot 的默认文件,配置:key = value

Mybatis 中定义 SQL 语句:

① 基于注解定义

② 基于 XML 定义

1. 2 步骤:对于一个项目来说,只需要操作一次就可以了

③:在 Mybatis 的操作中,只需要定义这个 Mapper 接口即可,不需要定义实现类,框架底层会自动生成实现类对象

mysql 加注释:-- + 空格

alt + Fn + insert:快速生成

注解的作用是?给机器看的注释,完了它能给点对应的反应

什么是IOC容器的 bean ?不知道

什么是依赖注入DI?不知道

1.准备工作

2.引入Mybatis 相关依赖,配置Mybatis

3.编写SQL语句(注解/XML)

 4.单元测试

lombook工具包

Lombok通过在Java编译器中的插件实现其功能。在代码编译期间,Lombok会自动根据注解所指定的信息在Java类中生成相应的方法,从而简化了Java代码的编写。在开发Spring Boot应用程序时,Lombok可以用来减少代码的重复性,提高开发效率。

例如,使用@Data注解,可以自动生成Java类的Getter、Setter、toString、equals、hashCode等方法。这样就可以大大减少代码的编写量,提高代码的可读性和可维护性。

例如,在一个POJO类中,如果使用@Data注解,就可以省略掉手动编写Getter、Setter方法的过程,只需要声明类的属性即可,如下所示:

尚硅谷/狂神MyBatis

MyBatis常用对象SqlSessionFactory和SqlSession介绍和运用_sqlsessionfactorybean 详解-CSDN博客

MyBatis:1.核心配置文件 2.映射文件

创建 java 工程或 web 工程需要有输出目录,但创建 maven 工程不需要

Mapper 映射文件:Mapper映射文件通常指的是MyBatis框架中用于描述SQL语句与Java方法之间映射关系的XML文件。MyBatis是一种持久层框架,它可以将Java方法与数据库操作进行映射,提供了方便的数据访问方式。

一个典型的Mapper映射文件包含了多个SQL语句的定义,每个SQL语句对应一个Java方法,通过Mapper接口与SQL语句建立映射关系。在使用MyBatis时,开发人员需要编写Mapper映射文件来描述数据库操作,然后通过MyBatis框架加载和解析这些映射文件,实现Java方法与数据库操作之间的映射关系。

测试类中固定代码部分:

测试类添加代码后:

#{ }:参数占位符

SqlSessionFactory用于创建和管理SqlSession对象,而SqlSession用于执行具体的数据库操作。它们是MyBatis框架中非常重要的两个接口,协同工作以实现数据库访问和操作。

测试

⭐ JDBC 和 Mybatis 中的增删改都需要提交事务!⭐

@Test注解是JUnit框架中的一个重要注解,用于标记测试方法。通过使用@Test注解,我们可以方便地定义和执行单元测试,确保代码的质量和正确性。

MyBatis 的核心:

UserMapper.xml:

配置文件:

namespace:绑定一个对应的 Dao/Mapper 接口

xml 标签:

resultType:返回的结果类型

resultMap:返回结果集

类型如果是 类,要连包带类一起写

测试类

SqlSession:相当于连接

UserDao userdao = sqlsession.getMapper(UserDao.class):相当于获得可对该 sql 操作的对象

maven 中经常遇到的问题:资源过滤 

2、第一个Mybatis程序_哔哩哔哩_bilibili

0:55:0 

配置信息

mybatis核心配置文件

sqlSession :相当于 jdbc 中的 preparedStatement

写工具类:得到SqlsessionFactory/Sqlsession

在使用 Spring Boot 时,通常不需要显式地配置 SqlSessionFactory 和 SqlSession。Spring Boot 提供了自动配置机制,可以根据依赖和配置,自动创建这些对象并将其注入到应用程序中。

Spring Boot 会根据配置和代码,自动创建并管理 SqlSessionFactory 和 SqlSession。可以直接在 Service 层使用 SqlSession,并且不需要手动关闭它。

写实体类:POJO

写接口,写方法

写 Mapper 配置文件

1. 去官网复制粘贴配置头

2. 通过 namespace 绑定要实现的 Mapper 接口和 Mapper配置文件

写测试类

测试类中的结构和接口中的结构最好一一对应

1. 获得sqlsession

2. 

绑定异常报错:

解决方法:

全局xml配置文件:

配置完成后出现错误2:

问题出现原因:maven出现资源过滤

解决方法:

在 POM.xml 文件中写 build

<!--    在build中配置resources , 来防止我们资源导出失败的问题--><build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes></resource></resources></build>

黑马 Mybatis

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

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

相关文章

【leetcode】动态规划::前缀和

标题&#xff1a;【leetcode】前缀和 水墨不写bug 正文开始&#xff1a; &#xff08;一&#xff09;简单前缀和 描述 给定一个长度为n的数组a1​,a2​,....an​. 接下来有q次查询, 每次查询有两个参数l, r. 对于每个询问, 请输出al​al1​....ar​ 输入描述&#xff1a; 第一…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑灵活爬坡产品的虚拟电厂两阶段分布鲁棒优化运营策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

轨迹规划 | 图解最优控制LQR算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 最优控制理论2 线性二次型问题3 LQR的价值迭代推导4 基于差速模型的LQR控制5 仿真实现5.1 ROS C实现5.2 Python实现5.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全…

硬件标准化之道:Linux社区与硬件厂商的协同创新

在Linux的广阔世界中&#x1f30c;&#xff0c;与各式各样的硬件设备进行互动和协作是一项不断进行的挑战&#x1f527;。硬件厂商和Linux社区的紧密合作&#xff0c;通过制定一系列标准和协议&#x1f4dc;&#xff0c;使得从键盘&#x1f3b9;和鼠标&#x1f5b1;到复杂的网络…

七、Ajax(Django开发)

Ajax&#xff08;Django开发&#xff09; 知识点的回顾&#xff1a;1.Ajax请求2.订单小结3.图表4.关于文件上传4.1基本操作案例&#xff1a;批量上传数据案例&#xff1a;混合数据&#xff08;Form&#xff09;4.2启用media案例&#xff1a;混合数据&#xff08;form&#xff0…

C++设计模式:桥模式(五)

1、定义与动机 桥模式定义&#xff1a;将抽象部分&#xff08;业务功能&#xff09;与实现部分&#xff08;平台实现&#xff09;分离&#xff0c;使他们可以独立地变化引入动机&#xff1a; 由于某些类型的固有的实现逻辑&#xff0c;使得它们具有两个变化的维度&#xff0c;…

阿里云服务器可以干嘛 阿里云服务器应用场景有哪些

阿里云服务器可以干嘛&#xff1f;能干啥你还不知道么&#xff01;简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;阿里云百科aliyunbaike.com整理阿里云服务器的用途&#xff1a; 阿里云服务器活动 aliyunbaike.com…

单例模式--理解

单例模式 单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时&#xff0c;为了防止频繁地创建对象使得内存飙升&#xff0c;单例模式可以让程序仅在内存中创建一个对象&#xff0c;让所有需要调用的地方都共享这一单例对象。 单…

使用docker-compose创建多项目容器运行

使用docker-compose创建多项目容器运行 按招网友提供方法创建 docker-compose.yml内容&#xff08;这里改了桥接模式&#xff0c;并且注释放开&#xff09; version: "3" services:docker_python:image: python:2.7.18container_name: py_appworking_dir: "/r…

婴儿洗衣机哪种比较实用?精选四大热门口碑婴儿洗衣机推荐

对于有了宝宝的家庭来说&#xff0c;洗衣成为了一项重要的家务事。大家都知道&#xff0c;宝宝的皮肤比较娇嫩&#xff0c;容易受到各种细菌、病毒的侵扰。所以&#xff0c;宝宝的衣物应该与大人的分开洗。婴儿洗衣机作为一种专门为婴幼儿家庭设计的洗衣机&#xff0c;其具有除…

nginx部署前端教程

目录 一、前言二、部署三、注意四、参考 一、前言 一般来说现在的软件项目&#xff0c;都是分用户端以及管理端的&#xff0c;并且是前后端分离的&#xff0c;这里我来记录一下部署两个前端的教程。 部署前端之前需要的准备工作是部署springBoot后端程序&#xff0c;这里我do…

qt设置异形图片并实现透明效果

思路:将背景设置为透明,然后将图片设置给label,将laben和this都设置为图片大小 setAttribute(Qt::WA_TranslucentBackground, true); 可以将背景设置为透明 然后 QPixmap *pixnew QPixmap(":/Image/xxx.png"); this->setFixedSize(pix->width(),pix->…

对OceanBase中的配置项与系统变量,合法性检查实践

在“OceanBase 配置项&系统变量实现及应用详解”的系列文章中&#xff0c;我们已经对配置项和系统变量的源码进行了解析。当涉及到新增配置项或系统变量时&#xff0c;通常会为其指定一个明确的取值范围或定义一个专门的合法性检查函数。本文将详细阐述在不同情境下&#x…

深入理解指针2:数组名理解、一维数组传参本质、二级指针、指针数组和数组指针、函数中指针变量

目录 1、数组名理解 2、一维数组传参本质 3、二级指针 4、指针数组和数组指针 5、函数指针变量 1、数组名理解 首先来看一段代码&#xff1a; int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("%d\n", sizeof(arr));return 0; } 输出的结果是&…

[大模型]大语言模型量化方法对比:GPTQ、GGUF、AWQ

在过去的一年里&#xff0c;大型语言模型(llm)有了飞速的发展&#xff0c;在本文中&#xff0c;我们将探讨几种(量化)的方式&#xff0c;除此以外&#xff0c;还会介绍分片及不同的保存和压缩策略。 说明&#xff1a;每次加载LLM示例后&#xff0c;建议清除缓存&#xff0c;以…

python之列表操作

1、创建列表 代码示例&#xff1a; i [1, 2, 34, 4] o list((1, 2, 3, 4, 5, 6)) 分别创建了两个数组&#xff0c;这两种格式都能创建数组 2、关于数组的操作 1、添加元素 1、append&#xff08;&#xff09; append方法主要是添加一个元素 代码示例如下&#xff1a;…

深度学习理论基础(七)Transformer编码器和解码器

学习目录&#xff1a; 深度学习理论基础&#xff08;一&#xff09;Python及Torch基础篇 深度学习理论基础&#xff08;二&#xff09;深度神经网络DNN 深度学习理论基础&#xff08;三&#xff09;封装数据集及手写数字识别 深度学习理论基础&#xff08;四&#xff09;Parse…

手机软件何时统一--桥接模式

1.1 凭什么你的游戏我不能玩 2007年苹果手机尚未出世&#xff0c;机操作系统多种多样&#xff08;黑莓、塞班、Tizen等&#xff09;&#xff0c;互相封闭。而如今&#xff0c;存世的手机操作系统只剩下苹果OS和安卓&#xff0c;鸿蒙正在稳步进场。 1.2 紧耦合的程序演化 手机…

vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户

1.后端返回的json数据结构为&#xff1a; {"message":"下载失败&#xff0c;下载文件不存在&#xff0c;请联系管理员处理&#xff01;","code":500} 2.vue 请求后台接口返回的 Blob数据 3.问题出现的原因是&#xff0c;正常其他数据列表接口&…

[C++][算法基础]堆排序(堆)

输入一个长度为 n 的整数数列&#xff0c;从小到大输出前 m 小的数。 输入格式 第一行包含整数 n 和 m。 第二行包含 n 个整数&#xff0c;表示整数数列。 输出格式 共一行&#xff0c;包含 m 个整数&#xff0c;表示整数数列中前 m 小的数。 数据范围 1≤m≤n≤&#x…