当前位置: 首页 > news >正文

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.xdnf.cn/news/862183.html

相关文章:

  • Spark实战能力测评模拟题精析【模拟考】
  • 编程技能:格式化打印04,sprintf
  • Ubuntu 16.04 密码找回
  • 区块链安全攻防战:51% 攻击与 Sybil 攻击的应对策略
  • 目标检测任务的评估指标mAP50和mAP50-95
  • OpenCV计算机视觉实战(10)——形态学操作详解
  • 【从前端到后端导入excel文件实现批量导入-笔记模仿芋道源码的《系统管理-用户管理-导入-批量导入》】
  • 目标检测任务的评估指标P-R曲线
  • NPOI操作EXCEL文件 ——CAD C# 二次开发
  • LlamaIndex:解锁LLM潜力的数据编排利器
  • C++性能优化指南
  • Java Stream 高级实战:并行流、自定义收集器与性能优化
  • ODOO12
  • springboot--实战--大事件--文章分类接口开发详解
  • 微软的新系统Windows12未来有哪些新特性
  • 微软重磅发布Magentic UI,交互式AI Agent助手实测!
  • 使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯
  • RT Thread平台下 基于N32G45x和N32L40x的drv_pwm驱动实现
  • PageHelper-分页插件
  • 【工具使用】STM32CubeMX-FreeRTOS操作系统-任务、延时、定时器篇
  • win11 连接共享打印机提示:错误0x00000709
  • Dify智能问数大模型Text2SQL流程编排从0到1完整过程
  • Python-正则表达式(re 模块)
  • 系统调试——ADB 工具
  • unix/linux,sudo,其内部结构机制
  • 几何绘图与三角函数计算应用
  • 五大主流大模型推理引擎深度解析:llama.cpp、vLLM、SGLang、DeepSpeed和Unsloth的终极选择指南
  • 多态(全)
  • 【动手学MCP从0到1】2.1 SDK介绍和第一个MCP创建的步骤详解
  • 蓝桥杯17114 残缺的数字