Mybatis入门到精通

一:什么是Mybatis

二:Mybatis就是简化jdbc代码的

三:Mybatis的操作步骤

1:在数据库中创建一个表,并添加数据

我们这里就省略了

2:Mybatis通过maven来导入坐标(jar包)

3:编写Mybatis的核心配置文件

注意:引用类的时候用.,路径用//

5:编写Mapper.xml的配置文件(对应的实体类自己写)

5:加载配置文件

四:Mapper代理开发

原先我们执行sql语句的时候,要指定哪个sql语句,sql语句一多找起来很麻烦

现在用Mapper代理,就可以自动识别里面的sql语句,这样找起来更方便,就不用手动找了

1:放到同一目录下

2:映射文件命名空间为接口的全名,id就是这个sql语句的功能,对应的实体类就是你写的那个类

3:在Mapper接口中定义方法,方法名与映射文件中的id保持一致,返回值为List<text>(根据编写的sql语句的功能来)

4:进行编码

过程就是:

1:我们获取这个接口的class文件,他就在当前目录下找映射的命名空间与这个接口的全类名一致的映射文件

2:我们调用接口里面的方法,他就到对应的映射文件里面找到方法和id名字对应的sql语句,并封装对应的实体类,返回一个泛型集合,这个泛型根据实体类

接口的全类名对应映射文件的命名空间

接口里面的方法的名字对应映射文件的id

接口里面的方法的返回值对应映射文件的实体类

代理模式(aop):一个代理对应一个老板

我们去找代理,代理找老板

我们告诉代理要干什么,代理在通知老板要干什么

注意

使用指定包时

MyBatis 通过配置的路径直接解析 XML,再根据 namespace 找到对应的接口和id 绑定接口方法,与文件名无关

使用package代理时

XML 文件名必须与接口名一致 如接口 TextMapper.java 需对应 TextMapper.xml。若不一致,包扫描无法关联两者 

XML 需与接口同级目录 编译后,XML 必须位于 target/classes/com/yunlong/mapper/ 下

命名空间和 SQL id 要求不变 仍需匹配接口全限定名和方法名 

五:Mybatis核心配置文件

可以设置一个别名来简化对应的实体类代码的简写

类型别名简化

  • 未配置时:需在Mapper XML中写完整的类路径(如resultType="com.yunlong.pojo.User"
  • 配置后:只需写类名如resultType="User"

六:我们先解决数据库中的字段名和实体类中的成员的名字不一样导致不能封装

1:起别名

2:使用sql片段

3:使用resultmap进行映射

把数据库中的字段名和实体类中的成员的名字不一样进行映射,id就是实体类的名字(因为用的package进行代理,所以只需要写实体类的名字就可以了)

column:表的字段名,property:实体类的属性名

七:使用配置文件完成数据库的增删改查

增:

特殊字符处理:

我们是在xml文件里面写的,所以要符合xml文件的语法,如果遇到特殊字符我们使用以下几种方法

1:使用转义字符

2:CDATA区

多条件查询:

写参数的几种方法

1:散装参数

如果方法中有多个参数,那方法中的参数要使用@param("和sql语句的参数相同"),相当于占位符,这样他就知道传入sql语句的参数是哪个了,占位符和sql语句里面参数保持一致

2:使用对象传入,根据成员的参数依次传入,要求实体类的属性名名和sql语句中的参数名保持一致,对应的上就可以

3:使用键的对象传入,键的名字和sql语句参数的名字一致

动态条件查询

1:先判断传进来的属性值是否为空,在拼接sql语句

改进传入参数的bug

第一种:where后面加1=1

第二种:使用where标签

单条件的动态条件查询

从多个条件中选择一个条件查询,选择哪个将拼接哪个

如果用户一个都没选,那么将报错

choose:相当于java里面的switch

when相当于java里面的case

otherwise相当于java里面的default

改进方案:

1:加入一个otherswise如果用户什么都没选将会拼接这个

2:加入where标签也可以,如果用户什么都没选将会去掉where

添加:

代理:

映射文件:



测试类里面的代码

想要返回主键的值,在映射文件中增加这个,它就把id的值存入到了实体类的对象当中

修改:

利用set标签,避免最后一个用户不修改的话,导致语法错误

删除:

我们要批量删除,我们要遍历数组,map会将数组封装成一个map集合,我们写array就可以了,键是array,值为数组,利用键来遍历,或者使用注解

collection:我们要遍历的数组

item:遍历出来的数

separator:分隔符

open和close:开始和结束的标记

参数传递:

我们在方法中传递的参数,映射文件中参数是如何接收方法中传递的参数

单个参数:里面属性要和映射文件的参数的名称要保持一致

多个参数:将参数封装为map集合,键的名称固定的,值就是传过来的值,

我们通过键来获取值,通过注解我们就可以改变键的名称

我们想要传过来的参数在映射文件中使用,只有两种方法

1:使用默认的map的键

2:使用注解来改变map的键,来使用注解的形式

我们在映射文件的sql语句中我们要使用map的键,它会自动来获取对应的值

八:使用注解完成数据库的增删改查

使用注解开发就不需要写映射文件了,直接在代理的方法上面写注解就可以了

他就不找映射文件了,而是找方法上面对应的注解

怎么写:

一个核心配置文件代表多个数据库,可以切换

一个映射文件,代理,实体类代表数据库中的一张表

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

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

相关文章

化学方程式配平免费API接口教程

接口简介&#xff1a; 根据反应物和生成物配平化学方程式。 请求地址&#xff1a; https://cn.apihz.cn/api/other/hxfcs.php 请求方式&#xff1a; POST或GET。 请求参数&#xff1a; 【名称】【参数】【必填】【说明】 【用户ID】【id】【是】【用户中心的数字ID&#xff…

Spring学习笔记:Spring的基于注解的XML的详细配置

按照刘Java的顺序&#xff0c;应该是从基于XML的DI开始接着上面的关于IoC容器装配。主要介绍学习Spring的XML基于注解的详细配置。 第一步是搭建一个Spring的基础工程&#xff08;maven管理&#xff09;&#xff0c;通过IoC机制获取IoC容器的对象。 创建maven工程并在pom文件…

(四)动手实现多层感知机:深度学习中的非线性建模实战

1 多层感知机&#xff08;MLP&#xff09; 多层感知机&#xff08;Multilayer Perceptron, MLP&#xff09;是一种前馈神经网络&#xff0c;包含一个或多个隐藏层。它能够学习数据中的非线性关系&#xff0c;广泛应用于分类和回归任务。MLP的每个神经元对输入信号进行加权求和…

第十三篇:MySQL 运维自动化与可观测性建设实践指南

本篇重点介绍 MySQL 运维自动化的关键工具与流程&#xff0c;深入实践如何构建高效可观测体系&#xff0c;实现数据库系统的持续稳定运行与故障快速响应。 一、为什么需要 MySQL 运维自动化与可观测性&#xff1f; 运维挑战&#xff1a; 手动备份容易遗漏或失败&#xff1b; …

蜜獾算法(HBA,Honey Badger Algorithm)

2021年由Hashim等人提出&#xff08;论文&#xff1a;Honey Badger Algorithm: A New Metaheuristic Algorithm for Solving Optimization Problems&#xff09;。模拟蜜獾在自然界中的智能捕食行为&#xff0c;属于群体智能优化算法&#xff08;与粒子群PSO、遗传算法GA同属一…

Duix.HeyGem:以“离线+开源”重构数字人创作生态

在AI技术快速演进的今天,虚拟数字人正从高成本、高门槛的专业领域走向大众化应用。Duix.HeyGem 数字人项目正是这一趋势下的杰出代表。该项目由一支拥有七年AI研发经验的团队打造,通过放弃传统3D建模路径,转向真人视频驱动的AI训练模型,成功实现了低成本、高质量、本地化的…

HTTP常见的请求方法、响应状态码、接口规范介绍

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是Web通信的基础协议&#xff0c;用于客户端和服务器之间的请求和响应。本文将详细介绍HTTP常见的请求方法、响应状态码以及接口规范&#xff0c;帮助开发者更好地理解和使用HTTP协议。 一、HTTP请求方法 HTTP请求方…

基于Matlab实现LDA算法

线性判别分析&#xff08;Linear Discriminant Analysis, LDA&#xff09;是一种经典的统计方法&#xff0c;常用于特征降维和分类问题。在机器学习领域&#xff0c; 一、LDA基本原理 LDA的目标是寻找一个投影空间&#xff0c;使得类间距离最大化&#xff0c;同时保持类内距离…

matlab基于GUI实现水果识别

基于GUI实现水果识别系统&#xff0c;限一个图片内存在一种水果 图像处理是一种利用计算机分析图像以达到预期结果的技术。图像处理一般指数字图像处理&#xff0c;而数字图像指由工业相机、摄像机、扫描仪等设备捕捉到的二维数组&#xff0c;数组中的元素称为像素&#xff0c…

XML 编码:结构化数据的基石

XML 编码:结构化数据的基石 引言 XML(可扩展标记语言)作为互联网上广泛使用的数据交换格式,已经成为结构化数据存储和传输的重要工具。本文旨在深入探讨XML编码的原理、应用场景以及编码规范,帮助读者更好地理解和运用XML。 XML编码概述 1. XML的起源 XML诞生于1998年…

虚拟机无法开启-关掉虚拟化

这个问题我之前解决过&#xff0c;没做笔记&#xff0c;这次记录下&#xff0c;最常见都上开启bois的cpu虚拟化。 其次是启动或关闭功能页面也需要选择&#xff0c;再就是和wsl都冲突问题&#xff0c;就是今天这个问题 您的主机不满足在启用 Hyper-V 或 Device/Credential Gua…

Python数据可视化科技图表绘制系列教程(二)

目录 表格风格图 使用Seaborn函数绘图 设置图表风格 设置颜色主题 图表分面 绘图过程 使用绘图函数绘图 定义主题 分面1 分面2 【声明】&#xff1a;未经版权人书面许可&#xff0c;任何单位或个人不得以任何形式复制、发行、出租、改编、汇编、传播、展示或利用本博…

LeetCode算法题 (搜索二维矩阵)Day18!!!C/C++

https://leetcode.cn/problems/search-a-2d-matrix/description/ 一、题目分析 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 ta…

猎板硬金镀层厚度:新能源汽车高压系统的可靠性基石

在新能源汽车的电池管理系统&#xff08;BMS&#xff09;和电机控制器中&#xff0c;硬金镀层厚度直接关系到高压环境下的电气稳定性与使用寿命。猎板针对车载场景开发的耐电迁移方案&#xff08;金层 2.5μm&#xff0c;镍层 8μm&#xff09;&#xff0c;经 150℃/85% RH 高压…

亚马逊站内信规则2025年重大更新:避坑指南与合规策略

亚马逊近期对Buyer-Seller Messaging&#xff08;买家-卖家站内信&#xff09;规则进行了显著收紧&#xff0c;明确将一些曾经的“灰色操作”列为违规。违规操作轻则收到警告&#xff0c;重则导致账户暂停或绩效受限。本文为您全面解析本次规则更新的核心要点、背后逻辑&#x…

WPF可拖拽ListView

1.控件描述 WPF实现一个ListView控件Item子项可删除也可拖拽排序&#xff0c;效果如下图所示 2.实现代码 配合 WrapPanel 实现水平自动换行&#xff0c;并开启拖拽 <ListViewx:Name"listView"Grid.Row"1"Width"300"AllowDrop"True&…

相机--双目立体相机

教程 链接1 教程汇总 立体匹配算法基础概念 视频讲解摄像机标定和双目立体原理 两个镜头。 双目相机也叫立体相机--Stereo Camera&#xff0c;属于深度相机。 作用 1&#xff0c;获取图像特征&#xff1b; 2&#xff0c;获取图像深度信息&#xff1b; 原理 原理和标定 …

Unity3D仿星露谷物语开发59之定制角色衬衫

1、目标 自定义角色衬衫、裤子、手臂颜色。 2、概念 在Assets -> Sprites -> Output Textures下&#xff0c;Customised_farmer为目前角色所用的精灵表。 如果上面是输出纹理&#xff0c;那么输入纹理是什么呢&#xff1f;它位于Assets/Sprites/Sprite Textures/Chara…

【HarmonyOS 5】游戏开发教程

一、开发环境搭建 ‌工具配置‌ 安装DevEco Studio 5.1&#xff0c;启用CodeGenie AI助手&#xff08;Settings → Tools → AI Assistant&#xff09;配置游戏模板&#xff1a;选择"Game"类型项目&#xff0c;勾选手机/平板/折叠屏多设备支持 二、游戏引擎核心架构…

深度探索:如何用DeepSeek重构你的工作流

前言:AI时代的工作革命 在人工智能浪潮席卷的今天,DeepSeek作为国产大模型的代表之一,正以其强大的自然语言处理能力、代码生成能力和多模态交互特性,重新定义着人类的工作方式。根据IDC报告显示,2024年企业级AI应用市场规模已突破800亿美元,其中智能办公场景占比达32%,…