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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytorch 演示 tensor并行

pytorch 演示 tensor并行 一.原理二.实现代码 本文演示了tensor并行的原理。如何将二个mlp切分到多张GPU上分别计算自己的分块,最后做一次reduce。 1.为了避免中间数据产生集合通信,A矩阵只能列切分,只计算全部batch*seqlen的部分feature 2.因为上面的步骤每张GPU只有部分featu…

布隆过滤器详解及java实现

什么是布隆过滤器&#xff1f; 布隆过滤器&#xff08;Bloom Filter&#xff09;是一种数据结构&#xff0c;用于判断一个元素是否属于一个集合。它的特点是高效地判断一个元素是否可能存在于集合中&#xff0c;但是存在一定的误判率。 布隆过滤器的基本原理是使用一个位数组…

【STL学习】(4)vector的模拟

前言 本文将模拟实现vector的常用功能&#xff0c;目的在于更深入理解vector。 一、前置知识 在模拟之前先对vector的结构和常用接口学习&#xff0c;有一个大致了解。看源码&#xff0c;本文参考的源码是SGI版本的stl3.0。 技巧&#xff1a; 看源码不要一行一行的看&#xff…

Severt

severt是让我们自己写一些类,然后把这些类给加载Tomcat中&#xff0c;后续Tomcat收到HTTP请求(来自于浏览器)&#xff0c;就会执行到咱们上面写的代码.从而通过这些代码,完成一定的业务逻辑. 创建项目 此处创建的是一种新的项目的形式称为Maven项目,Maven是Java 中的一个的构建…

libVLC 音频立体声模式切换

在libVLC中&#xff0c;可以使用libvlc_audio_set_channel函数来设置音频的立体声模式。这个函数允许选择不同的音频通道&#xff0c;例如立体声、左声道、右声道、环绕声等。 /*** Set current audio channel.** \param p_mi media player* \param channel the audio channel…

Datacom HCIP笔记-路由策略与路由控制 之二

路由策略和策略的区别&#xff1f; 路由策略&#xff1a; 操作的对象是路由表条目&#xff0c; 实现路由过滤&#xff0c;从而实现访问控制&#xff0c;引入时过滤&#xff0c;发送和接收路由时过滤。 通过配置cost&#xff0c;来实现路径的控制。 策略路由&#xff1a; 对…

【Python】还在用print进行调试,你Out了!!!

1. 引言 Python 中最常用的函数是什么&#xff1f;像在大多数编程语言中&#xff0c;print() 函数是最常用的。我相信大多数开发者都会像我一样&#xff0c;在开发过程中多次使用它将信息进行打印。 当然&#xff0c;没有其他方法可以完全取代print()函数。不过&#xff0c;当…

QA测试开发工程师面试题满分问答9: Python中内存管理的概念、原理、使用

概念原理 Python中的内存管理是由解释器自动处理的&#xff0c;它使用引用计数和垃圾回收机制来管理内存。以下是Python内存管理的一些关键概念、设计原理和最佳实践&#xff0c;以帮助您高效使用和管理内存&#xff1a; 引用计数&#xff1a;Python使用引用计数来追踪对象的引…

谷歌浏览器如何截全屏图片?

有时候想要截取浏览器全屏&#xff0c;谷歌浏览器自带截取全屏命令&#xff0c;操作步骤如下&#xff1a; 1、按住键盘的F12或者是空白处点击鼠标右键找到检查项 2、按住ctrlshiftp&#xff0c;会出现搜索框的界面 3、搜索框中输入screen&#xff0c;选中Capture full size scr…

项目架构MVC,DDD学习

写在前面 本文一起看下项目架构DDD&#xff0c;MVC相关的内容。 1&#xff1a;MVC 不管我们做什么项目&#xff0c;自己想想其实只是做了三件事&#xff0c;如下&#xff1a; 其实&#xff0c;这三件事完全在一个类中做完也可以可以正常把项目完成的&#xff0c;就像下面这…

Redis简介、常用命令

目录 一、关系数据库​​与非关系数据库​​ 1.1. 关系型数据库 1.2 非关系型数据库 1.3.关系数据库与非关系型数据库区别 1.3.1. 数据存储方式不同 1.3.2. 扩展方式不同 1.3.3.对事务性的支持不同 1.4.非关系型数据库产生背景 二、Redis 2.1.Redis简介 2.2.Redis的…

如何使用开源情报跟踪一个人?在线访问网站以及使用方法介绍

如何使用开源情报跟踪一个人&#xff1f;在线访问网站以及使用方法介绍。 开源情报&#xff08;OSINT&#xff09;是一门关于收集和分析公开可用信息的独特技艺&#xff0c;它致力于构建个人或团体的详尽档案。 这一过程中&#xff0c;信息搜集者会利用多元化的信息源&#xff…

火山方舟大模型服务平台调用Demo测试(豆包)

豆包得后台大模型支持为字节得火山方舟&#xff0c;所以想使用豆包的API&#xff0c;直接从这里就可以。 一、首先注册账号&#xff1a; 火山引擎-云上增长新动力 注册完成之后&#xff0c;控制台-账户-API访问密钥 二、找到API测试用例&#xff1a; Skylark-chat API调用…

Linux实验3 shell命令进阶

一&#xff1a;实验目的 学习Linux下的文件系统结构&#xff0c;了解最基本的Linux下的shell命令操作&#xff0c;例如ls, cd, cat等各种指令操作。 学习vim编辑器的使用方式&#xff0c;学习如何使用ssh连接远程服务器。 二&#xff1a;实验内容 1&#xff0e;利用ls命令查找…

记一次Debug与Release版程序输出不一致的问题解决

问题叙述&#xff1a; 在x86平台下无论Debug还是Release都没问题&#xff0c;而在arm平台下Debug版本程序无问题&#xff0c;Release版本程序&#xff08;-O3编译&#xff09;发现输出值不正确&#xff0c;怀疑值被篡改&#xff0c;于是在调用前后分别使用printf打印出参数值&…

pdf操作器(图片转文字、PDF转word、PDF拆分、图片jpg、png互转)

pdf操作器&#xff08;不用联网图片转文字、PDF转word、PDF拆分、图片jpg、png互转&#xff09;介绍目前该软件实现了以下功能 pdf转wordpdf拆分图片&#xff0c;图片导出在桌面的一个文件夹里图片合并为pdf压缩、转换图片格式&#xff08;jpg和png&#xff09;OCR图片转文字&…

Leetcode刷题-哈希表详细总结(Java)

哈希表 当我们想使⽤哈希法来解决问题的时候&#xff0c;我们⼀般会选择如下三种数据结构。 数组set &#xff08;集合&#xff09;map&#xff08;映射&#xff09; 当我们遇到了要快速判断⼀个元素是否出现集合⾥的时候&#xff0c;就要考虑哈希法。如果在做⾯试题⽬的时候…

【Frida】【Android】 10_爬虫之WebSocket协议分析

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

鸿蒙HarmonyOS 与 Android 的NDK有什么不一样?

1. 序言 就像开发Android要用Android Studio一样&#xff0c;Android Studio&#xff08;简称AS&#xff09;其实是基于IDEAgradle插件android插件开发而来。 鸿蒙系统&#xff0c;你可以认为它和android有点像&#xff0c;但又是超越android的存在&#xff0c;除了手机&…

IO流

一、IO概述 1&#xff0e;什么是IO流? 存储和读取数据的解决方案l: inputo: output流∶像水流一样传输数据 2.IO流的作用? 用于读写数据&#xff08;本地文件&#xff0c;网络) 3.IO流按照流向可以分类哪两种流? 输出流:程序 - > 文件 输入流:文件 - > 程…