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

发布时间:2026/9/11 4:44:19

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/9/9 20:41:50

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

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

2026/9/9 6:37:38

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

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

2026/9/10 12:39:30

毕设项目 深度学习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/9/11 4:40:21

免费把浏览器登录态共享给 AI 助手:ego-lite 完整入门

免费把浏览器登录态共享给 AI 助手:ego-lite 完整入门 【免费下载链接】ego-lite The fastest browser for AI agents to run browser automation, built for sharing your logged-in browser state with your AI agents, like Codex or Claude Code, without distu…

2026/9/11 4:40:21

Java性能调优实战:从一次FullGC到稳住百万并发

凌晨两点,告警群炸了。核心交易系统响应时间从50ms飙到3秒,CPU打到98%,订单失败率肉眼可见地往上涨。值班同事第一反应是重启,但重启后不到十分钟,同样的症状再次出现。这一次,我们没有重启,而是…

2026/9/11 4:40:21

电子元器件视觉质检:YOLO多版本选型与大模型决策闭环实战

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

2026/9/11 4:35:21

用Calibre修改epub行距:从CSS原理到实操避坑指南

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

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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