MyBatis 基础CRUD全套实战学习笔记

发布时间:2026/11/5 0:04:39

MyBatis 基础CRUD全套实战学习笔记 前言MyBatis 是后端开发主流持久层框架用来简化 JDBC 数据库操作不用手写繁琐的连接、释放资源代码。本文按课程分段完整梳理 MyBatis 基础增删改查全套操作从环境搭建到条件查询全覆盖适合零基础入门复习。一、Day09-01 MyBatis 基础操作 - 环境准备1. 核心步骤Maven 依赖导入导入 MyBatis 核心包、对应数据库驱动MySQL8.x、单元测试 JUnit 依赖。!-- mybatis核心 -- dependency groupIdorg.mybatis/groupId artifactIdmybatis/artifactId version3.5.9/version /dependency !-- mysql驱动 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.30/version /dependency创建数据库与实体类设计业务数据表示例员工表emp编写对应实体类Emp属性与表字段一一对应提供 get/set、无参构造。编写 MyBatis 全局核心配置文件mybatis-config.xml配置数据库连接环境、开启日志打印方便查看执行 SQL、注册 Mapper 映射文件 / 注解 Mapper 接口。Mapper 两种开发方式二选一XML 映射文件方式EmpMapper.xml编写 SQL 语句注解开发方式Select/Insert/Update/Delete直接写在 Mapper 接口方法上测试环境校验通过SqlSessionFactory获取SqlSession加载配置文件验证数据库连通性。学习重点环境搭建是所有操作的基础配置文件路径、数据库账号密码、Mapper 注册位置出错会直接报找不到 SQL、连接失败等异常。二、Day09-02 MyBatis 基础操作 - 删除基础删除1. 业务场景根据主键 ID 删除单条数据。2. 两种实现方式方式 1XML 映射delete iddeleteById delete from emp where id #{id} /delete方式 2注解开发Delete(delete from emp where id #{id}) void deleteById(Integer id);3. 测试调用SqlSession sqlSession factory.openSession(true); // true自动提交事务 EmpMapper mapper sqlSession.getMapper(EmpMapper.class); mapper.deleteById(1);坑点提醒MyBatis 默认关闭自动提交若openSession()不传 true删除后必须手动sqlSession.commit()否则数据库无变化。三、Day09-03 MyBatis 基础操作 - 删除预编译 SQL1. 什么是预编译 SQL#{变量}底层会生成?占位符JDBC 预编译语句PreparedStatement从根源防止 SQL 注入。 对比危险拼接${id}直接字符串拼接存在注入漏洞删除、新增、更新、查询优先使用#{}。2. 实战演示错误写法拼接注入风险delete from emp where id ${id}标准安全写法预编译delete from emp where id #{id}核心知识点预编译是 MyBatis 安全核心特性所有传参场景统一使用#{参数名}仅动态表名、排序字段才不得已使用${}。四、Day09-04 MyBatis 基础操作 - 新增1. 新增单条数据基础语法XMLinsert idinsertEmp insert into emp(name,gender,entrydate,update_time) values(#{name},#{gender},#{entrydate},#{updateTime}) /insert注解Insert(insert into emp(name,gender,entrydate,update_time) values(#{name},#{gender},#{entrydate},#{updateTime})) void insert(Emp emp);2. 参数传递规则传入实体类对象时#{}内直接写实体类属性名MyBatis 自动通过 getter 取值。3. 事务说明新增属于 DML 修改语句和删除一样不开启自动提交时需要手动 commit。五、Day09-05 MyBatis 基础操作 - 新增主键返回业务需求插入数据后立刻拿到数据库自增的主键 id用于后续关联操作。两种实现方案方案 1XML 标签配置insert idinsertEmp useGeneratedKeystrue keyPropertyid insert into emp(name,gender) values(#{name},#{gender}) /insertuseGeneratedKeystrue开启获取自增主键keyPropertyid把主键赋值给入参 Emp 对象的 id 属性方案 2注解实现Insert(insert into emp(name,gender) values(#{name},#{gender})) Options(useGeneratedKeys true, keyProperty id) void insert(Emp emp);使用效果调用 insert 方法后传入的 Emp 对象emp.getId()就能拿到刚插入数据的主键。六、Day09-06 MyBatis 基础操作 - 更新1. 根据主键修改数据XMLupdate idupdateEmp update emp set name#{name},gender#{gender},entrydate#{entrydate} where id#{id} /update注解Update(update emp set name#{name},gender#{gender} where id#{id}) void update(Emp emp);2. 注意点更新必须携带唯一条件主键 id否则会全表更新造成数据事故实际开发中尽量限制更新范围。七、Day09-07 MyBatis 基础操作 - 查询根据 ID 查询1. 单条精准查询根据主键查询单条员工返回单个 Emp 实体对象。Select(select * from emp where id #{id}) Emp getById(Integer id);2. 自动封装原理MyBatis 查询结果集 ResultSet会自动匹配列名与实体类属性字段名和属性名完全一致直接映射下划线命名update_time与驼峰命名updateTime可在全局配置开启驼峰自动转换。3. 返回值说明确定只查 1 条数据返回Emp对象不确定条数使用集合ListEmp接收避免无数据时报空指针。八、Day09-08 MyBatis 基础操作 - 查询条件查询1. 多条件固定查询本文开篇示例代码对应知识点需求查询姓名含 “张”、性别 1、入职时间 2010-2020 之间的员工按更新时间倒序。注解完整示例//条件查询员工 Select(select * from emp where name like %张% and gender 1 and entrydate between 2010-01-01 and 2020-01-01 order by update_time desc ) ListEmp list();2. 核心 SQL 语法讲解like %张%模糊匹配包含 “张” 的姓名and多条件同时满足between A and B区间筛选包含起止日期order by 字段 desc倒序排序最新数据在前。3. 拓展动态条件进阶硬编码条件灵活性差真实开发会使用#{参数}动态传参结合 MyBatis 动态 SQL 标签if实现可选条件查询。4. 返回值多条件查询会返回多条数据统一使用ListEmp集合接收。九、Day09 整体学习总结操作顺序逻辑环境准备 → 删 / 增 / 改DML需要事务提交 → 查询DQL无需事务核心语法统一规范传参全部使用#{}预编译防 SQL 注入增删改必须注意事务提交新增自增主键通过useGeneratedKeys回写两种开发模式对比注解开发简单 CRUD 简洁直观适合小型项目XML 文件复杂多条件动态 SQL 可读性更强企业大型项目主流高频踩坑汇总忘记提交事务新增 / 删除 / 更新不生效实体类属性名和数据库字段不匹配查询字段为 null混淆#{}与${}引发 SQL 注入安全问题条件查询返回单对象多条数据抛出转换异常统一用 List 接收。
延伸阅读

更多相关文章

2026/11/4 20:36:20

2026 论文降AI率工具终极测评:亲测好用,毕业季生存手册

2026 年学术审查全面收紧,AIGC 检测与查重标准同步升级,知网、万方系统更新后,传统降重手段易被识别。面对算法优化后的查重机制,普通工具难以有效去除 AI 痕迹。本次从降重效果、AI 识别规避、格式完整性、使用便捷性、价格合理性…

2026/10/29 7:32:59

DBCO 基团失活?DBCO-PEG-Mannitol 标准化保存指南来了

DBCO-PEG-Mannitol 即二苯并环辛炔 - 聚乙二醇 - 甘露醇,是一款生物相容性优异的无铜点击化学中间体。分子中的甘露醇亲水结构可显著提升整体水溶性,端位 DBCO 基团则能够参与 SPAAC 无铜点击偶联反应,常应用于低毒体内靶向载体、肾靶向纳米材…

2026/11/4 16:29:58

毕设项目 深度学习YOLO交通路面缺陷检测系统(源码+论文)

文章目录0 前言1 项目运行效果2 课题背景2.1. 道路基础设施发展现状2.2. 路面缺陷检测技术演进历程2.2.1 传统检测方法2.2.2 机械化检测阶段2.3. 计算机视觉技术突破2.3.1 传统图像处理技术2.3.2 深度学习革命2.4. 路面缺陷检测的特殊性挑战2.4.1 数据特性2.4.2 技术难点2.5. 本…

2026/11/5 0:02:07

8G显存本地AI数字人实战:从ASR到TTS的完整搭建与调优指南

8G显存在AI本地化圈子里处境挺尴尬的:你说它能跑模型吧,7B量化之后勉强能聊;你说它跑不好吧,又确实比集显强太多。大多数教程讲的都是怎么用Ollama跑一个聊天模型,但很少有人说可以更进一步——把它变成一只能听懂人话…

2026/11/5 0:02:07

大模型系统性入门:从原理、部署到微调应用的完整路线

1. 为什么你收藏了300个教程,依然觉得大模型没入门我先讲一个前几天在交流群里看到的真实场景:有人问"大模型怎么入门",群里立马有人甩出几个网盘链接,里面躺着几百个PDF和视频,说是"全网最全的大模型学…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/4 23:57:06

豆包三大更新实测:Skill体系、PPT与Excel打通、飞书衔接

1. 这次更新到底动了谁的蛋糕豆包这次放出来的三个更新,我第一时间就上手试了。说实话,刚看到更新日志的时候我没太当回事——毕竟现在各家AI助手三天两头都在推新功能,大部分都是换汤不换药。但真正跑完一轮完整的工作流之后,我改…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑