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 论文降AI率工具终极测评:亲测好用,毕业季生存手册

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

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

2026/7/18 20:20:01阅读更多 →
DBCO 基团失活?DBCO-PEG-Mannitol 标准化保存指南来了

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

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

2026/7/18 20:20:01阅读更多 →
毕设项目 深度学习YOLO交通路面缺陷检测系统(源码+论文)

毕设项目 深度学习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/7/18 20:20:01阅读更多 →
浏览器全流程深度拆解

浏览器全流程深度拆解

从输入URL到页面渲染: 你每天输入网址回车,但你知道这一瞬间浏览器经历了多少道工序吗?从 DNS 解析到 TCP 握手,从 HTTP 请求到关键渲染路径,本文用最通俗的语言,带你走完浏览器从"敲回车"到"看到页面"的完整旅程。 一、全景概览:一共分两大阶段 整…

2026/7/18 21:30:43阅读更多 →
docker上常用的软件安装

docker上常用的软件安装

环境: window11docker desktop sqlserver docker pull mcr.microsoft.com/mssql/server:2025-latestdocker run -d --restartalways -e ACCEPT_EULAY -e MSSQL_SA_PASSWORDYourStrongPassw0rd -p 1433:1433 --name sqlserver2025 mcr.microsoft.com/mssql/server:20…

2026/7/18 21:30:43阅读更多 →
AI 生活化应用的可观测性架构:从健康检查到全链路数据的系统化监测

AI 生活化应用的可观测性架构:从健康检查到全链路数据的系统化监测

AI 生活化应用的可观测性架构:从健康检查到全链路数据的系统化监测 一、生活化应用的隐性故障与发现延迟 AI 生活助手上线稳定运行两周后,用户反馈"情绪日记分析结果变短了"。排查发现:LLM 输出的 max_tokens 参数在两周前的配置变…

2026/7/18 21:30:43阅读更多 →
深度解析:如何用5个步骤将微信聊天记录转化为个人AI训练数据

深度解析:如何用5个步骤将微信聊天记录转化为个人AI训练数据

深度解析:如何用5个步骤将微信聊天记录转化为个人AI训练数据 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…

2026/7/18 21:30:43阅读更多 →
搜yinheit-SDD规范驱动+Harness驾驭工程AI全栈开发-学习记录

搜yinheit-SDD规范驱动+Harness驾驭工程AI全栈开发-学习记录

SDD规范驱动Harness驾驭:AI全栈开发的工程化跃迁一、出码率90%,为什么项目还是延期?2025年以来,Cursor、Copilot、Codex让开发者体验到了“AI辅助编码”的魔力。出码率从53%提升到80%-90%,但一个尴尬的现实随之而来&am…

2026/7/18 21:28:42阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/18 10:49:13阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/18 8:49:08阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/18 14:49:24阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →