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;详细介绍全…

ccf201712-2游戏

队列应用 import java.util.LinkedList; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);LinkedList<Integer> queue new LinkedList<>();int total scanner.nextInt();int k …

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

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

Transformer介绍

一、Transformer概述 Transformer模型是一种基于自注意力机制的神经网络架构&#xff0c;主要用于处理序列数据&#xff0c;如自然语言文本。它由编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;两部分组成&#xff0c;通过多层的自注意力机制…

七、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…

2024-简单点-python单例模式-__call__和__new__-线程安全版本

单例属性可变 先看一个版本&#xff0c;这版本虽然能控制成一个单实例&#xff0c;但是实例的值却可以变。。 import threading class Singleton: _instance None _lock threading.Lock() def __new__(cls, *args, **kwargs): # 加锁以确保线程安全 with cls._lock: …

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

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

【华为OD机试】游戏分组、王者荣耀【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与, 分 5 为两队,每队 5 人。 每位参与者都有一个评分,代表着他的游戏水平。 为了表演赛尽可能精彩,我们需要把 10 名参赛者分为…

git环境切换

文章目录 一. 操作步骤&#xff1a;1.查看全局设置3.Git 切换本地git设置4.切换仓库并推送 一. 操作步骤&#xff1a; 1.查看全局设置 $ Git config --global --list credential.https://codeup.aliyun.com.providergeneric user.namebiejiahao user.emailxxxxxxxxqq.com3.Gi…

人工智能数据分析Python常用库 03 pandas库

文章目录 一、对象创建1、Series对象&#xff08;1&#xff09;用列表创建&#xff08;2&#xff09;用一维numpy数组创建&#xff08;3&#xff09;用字典创建&#xff08;4&#xff09;data为标量的情况 2、DataFrame对象&#xff08;1&#xff09;通过Series对象创建&#x…

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

阿里云服务器可以干嘛&#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;其具有除…

空调(c++实现)

题目 Farmer John 的 N 头奶牛对他们牛棚的室温非常挑剔。 有些奶牛喜欢温度低一些&#xff0c;而有些奶牛则喜欢温度高一些。 Farmer John 的牛棚包含一排 N个牛栏&#xff0c;编号为 1…N&#xff0c;每个牛栏里有一头牛。 第 i 头奶牛希望她的牛栏中的温度是 pi&#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…