实战讲稿: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.propertiesapplication.yml中配置MyBatis的map-underscore-to-camel-case属性值,设置为true

4. 总结

  • 通过本次实战,我们学会了如何在Spring Boot中使用注解方式整合MyBatis,并进行了基本的CRUD操作。
  • 学会了如何测试映射器接口,并解决了字段名与属性名不一致的问题。

课后作业

  • 尝试使用XML方式配置MyBatis映射器接口。
  • 尝试使用MyBatis进行更复杂的查询操作,如连接查询、分组查询等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144163.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

『玉竹』基于Laravel 开发的博客、微博客系统和Android App

基于 Laravel 和 Filament 开发, 使用 Filament 开发管理后台&#xff0c;前端比较简洁。 博客大家都清楚是什么东西&#xff0c;微博客类似于微博之类的吧&#xff0c;有时候想要写的东西可能只有几句话&#xff0c;想要起个标题都不好起。 为了是微博客功能更好用&#xff0c…

通信工程学习:什么是ONT光网络终端

ONT&#xff1a;光网络终端 ONT&#xff08;Optical Network Terminal&#xff0c;光网络终端&#xff09;是光纤接入网络&#xff08;FTTH&#xff09;中的关键设备&#xff0c;用于将光纤信号转换为电信号或将电信号转换为光信号&#xff0c;以实现用户设备与光纤网络的连接。…

我的AI工具箱Tauri版-VideoIntroductionClipCut视频介绍混剪

本教程基于自研的AI工具箱Tauri版进行VideoIntroductionClipCut视频介绍混剪。 本项目为自研的AI工具箱Tauri版中的视频剪辑模块&#xff0c;专注于自动生成视频介绍片段。该模块名为 VideoIntroductionClipCut&#xff0c;用户可以通过该工具快速进行视频的混剪和介绍内容的生…

Android开发高频面试题之——Android篇

Android开发高频面试题之——Android篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Activity启动模式 standard 标准模式,每次都是新建Activity实例。singleTop 栈顶复用。如果要启动的A…

[数据集][目标检测]红外微小目标无人机直升机飞机飞鸟检测数据集VOC+YOLO格式7559张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7559 标注数量(xml文件个数)&#xff1a;7559 标注数量(txt文件个数)&#xff1a;7559 标注…

Web转发(forward)与重定向(redirect)

请求转发forward -> xxServlet收到请求 -> 直接转发给yyServlet -> yyServlet返回给客户端 整个过程中&#xff0c;客户端发出一个请求&#xff0c;收到一个响应。 实现: 方式一&#xff1a;利用RequestDispather接口中的forward方法实现请求转发。 RequestDispathe…

SMART PLC高速计数器(CV=PV)中断应用

PLC如何开中断,请参考下面文章链接: PLC定时中断程序应用注意事项(西门子三菱信捷)_plc中的定时中断是什么意思-CSDN博客文章浏览阅读3.4k次,点赞5次,收藏12次。本文探讨PLC中断的概念,介绍了西门子、三菱和信捷PLC开启中断的步骤,强调了主程序扫描时间与定时中断时间…

基于SpringBoot的在线教育平台的设计与实现

文未可获取一份本项目的java源码和数据库参考。 选题的背景与意义&#xff1a; 随着互联网时代信息技术的不断发展&#xff0c;线下已经产生了很多IT技术的培训机构&#xff0c;但是价格却十分昂贵并且需要人们持续不断的去具体培训地点学习&#xff0c;因此更需要一个课程优…

【LeetCode】每日一题 2024_9_18 坐上公交的最晚时间(排序,模拟)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 题目&#xff1a;坐上公交的最晚时间 代码与解题思路 func latestTimeCatchTheBus(buses []int, passengers []int, capacity int) (ans int) {// 核心思路分析&#xff1a;// 你可以搭乘公交车的最晚到达…

mysql怎样优化count(*) from 表名 where …… or ……这种慢sql

一 问题描述 线上发现一条类似这样的慢sql&#xff08;查询时长8s&#xff09;&#xff1a; select id,name,(select count(*) from t14 where t14.idt15.id or t14.id2t15.id) as cnt from t15 ; t14的id和id2字段上都有索引&#xff0c;但是因为条件里有or&#xff0c;导致…

数据结构(Day15)

一、学习内容 结构体位域 #include <myhead.h>typedef struct {int a:2;short b:1;char c:1; }m1;typedef struct {char a:3;short b:7;int c:10; }m2; int main(int argc, const char *argv[]) {printf("%ld\n",sizeof(m1));printf("%ld\n",sizeof(…

Matlab simulink建模与仿真 第十八章(Stateflow状态机)

参考视频&#xff1a;Simulink/stateflow的入门培训_哔哩哔哩_bilibili 一、概述 Stateflow是集成于Simulink中的图形化设计与开发工具&#xff0c;主要用于针对控制系统中的复杂控制逻辑进行建模与仿真&#xff0c;或者说&#xff0c;Stateflow适用于针对事件响应系统进行建模…

物联网系统中如何通过光电效应实现位置监测_光电传感器

物联网系统中为什么要使用光电传感器 物联网系统中使用光电传感器的原因可以归结为以下几个方面&#xff1a; 一、光电传感器的特性与优势 非接触性&#xff1a;光电传感器通过光线与物体相互作用来进行探测和测量&#xff0c;无需直接接触被测物体&#xff0c;避免了对物体的…

基于web的工作管理系统设计与实现

博主介绍&#xff1a;专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

如何使用ssm实现大湾区旅游推荐系统的设计与实现+vue

TOC ssm621大湾区旅游推荐系统的设计与实现vue 第1章 绪论 1.1 研究背景意义及内容 1.1.1 研究背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域…

【Python百日进阶-Web开发-FastAPI】Day802 - FastAPI安装和起步

文章目录 一、安装 FastAPI1.1 进入虚拟环境1.2 安装FastAPI及所有相关依赖1.3 可以分开来安装二、第一步2.1 最简单的FastAPI应用2.2 uvicorn.run() 常用参数2.3 交互式 API 文档2.3.1 docs文档(由 Swagger UI 提供)2.3.2 docs文档空白解决方案2.3.2.1 解决方法1:更新FastA…

Python OpenCV精讲系列 - 高级图像处理技术(八)

&#x1f496;&#x1f496;⚡️⚡️专栏&#xff1a;Python OpenCV精讲⚡️⚡️&#x1f496;&#x1f496; 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计&#xff0c;从基础概念入手&#xff0c;逐步深入到图像处理、特征检测、物体识…

软件卸载工具(windows系统)-geek

有时候软件卸载会很麻烦&#xff0c;使用geek会比较方便。但是针对一些特别大的软件&#xff0c;geek也好像会稍微费点劲&#xff08;比如MATLAB2022A&#xff09;,不过针对一般常规软件的卸载&#xff0c;geek就可以有效地完全卸载了&#xff0c;使用方法也很简单&#xff0c;…

【Elasticsearch系列十二】聚合-电视案例

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Vue3 中 Aos 动画同时触发的解决办法

文章目录 问题现象解决之后的效果解决办法问题猜测 问题现象 我总共有四行数据&#xff0c;每一行都是一个动画&#xff0c;但是触发第一个之后其他三个也都触发了 我想要的效果是&#xff1a;动画从底部出现的时候触发一个动画&#xff0c;不要都触发掉 解决之后的效果 解决…