实战讲稿:Spring Boot整合MyBatis
文章目录
- 实战讲稿:Spring Boot整合MyBatis
- 课程目标
- 课程内容
- 1. 创建员工映射器接口
- 1.1 创建子包
- 1.2 创建接口
- 2. 测试员工映射器接口
- 2.1 自动装配员工映射器
- 2.2 测试按标识符查询员工方法
- 2.3 测试查询全部员工方法
- 2.4 测试插入员工方法
- 2.5 测试更新员工方法
- 2.6 测试按标识符删除员工方法
- 3. 解决字段名与属性名不一致的问题
- 4. 总结
- 课后作业
实战讲稿:Spring Boot整合MyBatis
课程目标
- 理解Spring Boot与MyBatis整合的基本概念
- 学会使用注解方式在Spring Boot中创建MyBatis映射器接口
- 掌握基本的CRUD操作
- 学会解决字段名与属性名不一致的问题
课程内容
1. 创建员工映射器接口
1.1 创建子包
- 在
net.huawei.hrsys_ssm包下创建mapper子包。
1.2 创建接口
- 在
mapper子包中创建EmployeeMapper接口。
package net.huawei.hrsys_ssm.mapper;import net.huawei.hrsys_ssm.bean.Employee;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface EmployeeMapper {@Insert("insert into employee (age, gender, name, number, dep_id) " +"values (#{age}, #{gender}, #{name}, #{number}, #{depId})")int insert(Employee employee);@Delete("delete from employee where id = #{id}")int deleteById(int id);@Update("update employee set age = #{age}, gender = #{gender}, " +"name = #{name}, number = #{number}, dep_id = #{depId} where id = #{id}")int update(Employee employee);@Select("select * from employee where id = #{id}")Employee findById(int id);@Select("select * from employee")List<Employee> findAll();
}
2. 测试员工映射器接口
2.1 自动装配员工映射器
- 使用
@Autowired注解自动装配EmployeeMapper。
2.2 测试按标识符查询员工方法
- 创建
testFindById()测试方法。
@Test
public void testFindById() {int id = 1;Employee employee = employeeMapper.findById(id);if (employee != null) {System.out.println(employee);} else {System.out.println("标识符为[" + id + "]的员工不存在~");}
}
2.3 测试查询全部员工方法
- 创建
testFindAll()测试方法。
@Test
public void testFindAll() {List<Employee> employees = employeeMapper.findAll();employees.forEach(System.out::println);
}
2.4 测试插入员工方法
- 创建
testInsert()测试方法。
@Test
public void testInsert() {Employee employee = new Employee();employee.setAge(28);employee.setGender("男");employee.setName("王强");employee.setNumber(1013);employee.setDepId(3);int count = employeeMapper.insert(employee);if (count > 0) {System.out.println("员工记录插入成功~");System.out.println("插入的新记录:" + employeeMapper.findById(13));} else {System.out.println("员工记录插入失败~");}
}
2.5 测试更新员工方法
- 创建
testUpdate()测试方法。
@Test
public void testUpdate() {Employee employee = employeeMapper.findById(13);System.out.println("记录更新前:" + employee);employee.setAge(25);employee.setGender("女");employee.setName("王兰");employee.setNumber(1088);employee.setDepId(2);int count = employeeMapper.update(employee);if (count > 0) {System.out.println("员工记录更新成功~");System.out.println("记录更新后:" + employeeMapper.findById(13));} else {System.out.println("员工记录更新失败~");}
}
2.6 测试按标识符删除员工方法
- 创建
testDeleteById()测试方法。
@Test
public void testDeleteById() {System.out.println("待删除记录:" + employeeMapper.findById(13));int count = employeeMapper.deleteById(13);if (count > 0) {System.out.println("员工记录删除成功~");} else {System.out.println("员工记录删除失败~");}
}
3. 解决字段名与属性名不一致的问题
- 在
application.properties或application.yml中配置MyBatis的map-underscore-to-camel-case属性值,设置为true。
4. 总结
- 通过本次实战,我们学会了如何在Spring Boot中使用注解方式整合MyBatis,并进行了基本的CRUD操作。
- 学会了如何测试映射器接口,并解决了字段名与属性名不一致的问题。
课后作业
- 尝试使用XML方式配置MyBatis映射器接口。
- 尝试使用MyBatis进行更复杂的查询操作,如连接查询、分组查询等。
相关文章:
实战讲稿:Spring Boot整合MyBatis
文章目录 实战讲稿:Spring Boot整合MyBatis课程目标课程内容1. 创建员工映射器接口1.1 创建子包1.2 创建接口 2. 测试员工映射器接口2.1 自动装配员工映射器2.2 测试按标识符查询员工方法2.3 测试查询全部员工方法2.4 测试插入员工方法2.5 测试更新员工方法2.6 测试…...
基于深度学习的眼部疾病检测识别系统
温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 眼部疾病的早期诊断对于防止视力下降乃至失明至关重要。然而,专业的医疗资源分布不均,尤其是在偏远地区,人们很难获得专业的眼科医生提供的及时诊断服务。本系统…...
curl格式化json之jq工具?
jq 是一个轻量级的命令行工具,用于解析、操作和格式化 JSON 数据。它类似于 sed 或 awk,但专门用于处理 JSON 格式。使用 jq,你可以从复杂的 JSON 数据中提取所需的信息,格式化输出,进行数据筛选,甚至修改 …...
百收SEO蜘蛛池
百收SEO蜘蛛池 网站搜索排名上不去?SSL证书来帮忙! #SSL证书#网站优化#搜索引擎优化 谷歌蜘蛛石的话有非常多的一个重要性,首先的话就是能够提升我们网站的一个输入,尤其是对于我们百收SEO蜘蛛池新站来说,我们在做独立…...
(娱乐)魔改浏览器-任务栏图标右上角加提示徽章
一、目标: windows中,打开chromium,任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角,加上"有1条新消息"的小提示图标,也叫徽章(badge)注意:本章节纯属娱乐,有需要…...
JVM相关
1.JVM内存区域 一个运行起来的java进程就是一个Java虚拟机,就需要从操作系统中申请一大块内存。 内存中会根据作用的不同被划分成不同的区域: (1)栈:存储的内容是代码在执行过程中,方法之间的调用关系&a…...
9.18 微信小程序开发笔记
如何获取英语单词的发音,使其能在小程序界面通过点击外发? 1.通过外界API获取(例如有道API) 不下载音频文件,每次需要时直接API获取发音,存储压力小。但是一般的API都有使用次数限制,在背单词…...
dpdk课程学习之练习笔记八(dpvs的了解)
只是看到这个,跟着流程做一下练习,了解这个东东是干啥的,再就是搭建环境,基于dpdk的环境,顺手也就练习dpdk的环境搭建了。 0:总结 1:知道了lvs能实现的功能,挺强大。 2࿱…...
Linux标准IO-系统调用详解
1.1 系统调用 系统调用(system call)其实是 Linux 内核提供给应用层的应用编程接口(API),是 Linux 应用层进入内核的入口。不止 Linux 系统,所有的操作系统都会向应用层提供系统调用,应用程序通…...
LeetCode004-两个有序数组的中位数-最优算法代码讲解
最有帮助的视频讲解 【LeetCode004-两个有序数组的中位数-最优算法代码讲解】 https://www.bilibili.com/video/BV1H5411c7oC/?share_sourcecopy_web&vd_sourceafbacdc02063c57e7a2ef256a4db9d2a 时间复杂度 O ( l o g ( m i n ( m , n ) ) ) O(log(min(m,n))) O(log(min(…...
Unity携程Coroutine用法
一.携程概述 官方的解释是,携程允许你可以在多个帧中执行任务。在Unity中,携程是一个可以暂停并在后续帧中从暂停处继续执行的方法。 二.携程写法 下面示例使用携程和Update打印前5帧的时间间隔,展示了携程的基础写法 using System.Colle…...
腾讯百度阿里华为常见算法面试题TOP100(5):子串、堆
之前总结过字节跳动TOP50算法面试题: 字节跳动常见算法面试题top50整理_沉迷单车的追风少年-CSDN博客_字节算法面试题 子串 560.和为K的子数组...
「数据科学」清洗数据,真实数据集中缺失值的查看与处理
在数据科学的工作过程中,我们通过查看数据的基本要素和元数据之后,需要根据查看的结果,考虑是否需要清洗数据。缺失值的查看与处理,就是清洗数据的一部分。如果我们的数据集中,存在缺失值的话,就需要考虑如…...
彩蛋岛 销冠大模型案例
彩蛋岛 销冠大模型案例 任务: https://kkgithub.com/InternLM/Tutorial/tree/camp3/docs/EasterEgg/StreamerSales 视频 https://www.bilibili.com/video/BV1f1421b7Du/?vd_source4ffecd6d839338c9390829e56a43ca8d 项目git地址: https://kkgithu…...
大数据Flink(一百二十一):Flink CDC基本介绍
文章目录 Flink CDC基本介绍 一、什么是CDC 二、CDC的实现机制 三、传统 CDC ETL 分析 四、基于 Flink CDC 的 ETL 分析 五、什么是 Flink CDC 六、…...
SqlServer自定义类型的使用
目录 前言分类基于标量类型新建查询语句 用户定义的表类型新建查询语句 基于 CLR新建查询语句 前言 最近接触了SqlServer的自定义类型–TYPE,在此记录一下所得 分类 在 SQL Server 中,用户定义的类型(User-Defined Types, UDT)…...
LeetCode 滑动窗口 滑动子数组的美丽值
滑动子数组的美丽值 给你一个长度为 n 的整数数组 nums ,请你求出每个长度为 k 的子数组的 美丽值 。 一个子数组的 美丽值 定义为:如果子数组中第 x 小整数 是 负数 ,那么美丽值为第 x 小的数,否则美丽值为 0 。 请你返回一个包含…...
【JavaEE初阶】多线程(4)
欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 线程安全的 第四个原因 代码举例: 分析原因 解决方法 方法1 方法2 wait(等待)和notify(通知) wait和sleep区别 线程安全的 第四个原因 内存可见性,引起的线程安全问…...
初识 C++ ( 1 )
引言:大家都说c是c的升级语言。我不懂这句话的含义后来看过解释才懂。 一、面向过程语言和面向对象语言 我们都知道C语言是面向过程语言,而C是面向对象语言,说C和C的区别,也就是在比较面向过程和面向对象的区别。 1.面向过程和面向…...
Python数据分析 Pandas库-初步认识
Python数据分析 Pandas库-初步认识 认识Pandas pandas是一个非常实用的Python工具,我们可以把它想象成一个超级强大的表格处理工具,它比Excel更智能,操作更为简单。pands可以从各种文件格式(CSV、JSON、SQL、Excel࿰…...
科研人高效投稿指南:Paperxie AI 期刊论文写作,让你的成果更快见刊
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 一、开篇:被期刊论文困住的科研人,你不是一个人 做实验时可以通宵达旦ÿ…...
AI读脸术应用案例:智能相册自动标注年龄性别
AI读脸术应用案例:智能相册自动标注年龄性别 1. 引言:从海量照片到智能管理 你是否也有这样的烦恼?手机或电脑里存了成千上万张照片,想找一张特定人物的照片,却要花费大量时间一张张翻看。尤其是家庭相册,…...
Zotero文献管理效率革命:Ethereal Style插件深度应用指南
Zotero文献管理效率革命:Ethereal Style插件深度应用指南 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件,提供了一系列功能来增强 Zotero 的用户体验,如阅读进度可视化和标签管理,适合研究人员和学者。 项目地…...
【Python原生AOT编译2026权威指南】:基于CPython 3.15+的零依赖二进制生成实战(含性能提升237%实测数据)
第一章:Python原生AOT编译的演进脉络与2026技术定位Python长期以来以解释执行和字节码(.pyc)为核心运行范式,其动态特性虽赋予开发极大灵活性,却在启动延迟、内存占用与部署包体积方面持续面临挑战。原生AOT࿰…...
告别Electron臃肿!用Tauri 2.0 + Rust打造你的第一个轻量级桌面应用(附完整项目结构解析)
从Electron到Tauri 2.0:用Rust重构现代桌面应用开发范式 当Electron应用体积膨胀到200MB起步时,我们不得不重新思考桌面开发的未来。Tauri 2.0的出现绝非偶然——这是前端开发者对性能与体验的集体觉醒。本文将带你深入这个基于Rust的轻量级框架…...
告别重复劳动:用快马AI自动生成akshare数据清洗与分析流水线
告别重复劳动:用快马AI自动生成akshare数据清洗与分析流水线 金融数据分析中,数据获取和清洗往往是最耗时的环节。每次研究新标的,我们都要重复编写类似的代码:从不同接口获取数据、对齐时间轴、处理缺失值、计算技术指标……这些…...
HarmonyOS6 半年磨一剑 - RcTextarea 组件核心架构与类型系统设计
文章目录前言一、组件整体架构1.1 文件结构1.2 装饰器体系二、类型系统深度解析2.1 边框模式类型2.2 清空触发类型2.3 格式化与解析函数类型2.4 文本对齐与回车键类型三、核心参数体系3.1 必传参数3.2 尺寸相关参数3.3 功能开关参数四、内部状态与生命周期4.1 内部状态设计4.2 …...
手把手教你用Whistle给SSE/流式接口做Mock:从复制URL到完整响应的保姆级配置
从零构建SSE接口Mock环境:Whistle流式数据模拟实战指南 当你在开发一个实时聊天应用或AI对话界面时,Server-Sent Events (SSE)技术能提供持续的数据流,但测试环境的搭建往往令人头疼。想象一下,你的前端代码需要处理/api/chat这样…...
具身智能系统集成与计算效率优化路径探析
具身智能作为连接人工智能与物理世界的核心载体,通过融合感知、决策、执行等多模块实现自主交互,其系统集成的合理性与计算效率的高低,直接决定了智能体在复杂场景中的落地能力。当前,具身智能正从实验室走向产业化应用࿰…...
第三章 Qt 编译及安装
1. Qt 编译安装 2 Qt 在线安装 在线安装包的下载地址: https://download.qt.io/official_releases/online_installers/ Qt对不同的平台提供了不同版本的安装包,可根据实际情况自行下载安装,本文档使用qt-online-installer-windows-x64-on…...
