发布时间:2026/7/18 20:19:57
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/7/18 20:19:57

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

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

2026/7/18 20:19:57

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

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

2026/7/18 20:19:57

毕设项目 深度学习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 21:30:02

湛江水泥管厂家哪个好

在湛江,建筑、市政等工程建设蓬勃发展,水泥管作为基础建材,其质量和供应能力至关重要。面对众多的水泥管厂家,该如何选择呢?今天就为大家详细介绍一家值得关注的湛江水泥管厂家——廉江市大信建材有限公司,…

2026/7/18 21:30:01

浏览器全流程深度拆解

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

2026/7/18 21:25:01

高效解决Navicat试用到期问题:macOS用户必备的重置工具指南

高效解决Navicat试用到期问题:macOS用户必备的重置工具指南 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 如果你…

2026/7/17 5:59:06

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/18 10:53:38

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/17 7:39:19

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/18 0:00:24

某智驾大牛创业

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

2026/7/18 16:50:29

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…