Spring Boot使用注解方式整合MyBatis

news2024/11/24 18:51:09

文章目录

  • 实战讲稿: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.coloradmin.cn/o/2164207.html

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

相关文章

如何保持测试环境的稳定性?

日常自动化测试中最担心的就是环境不稳定问题。不稳定的测试环境&#xff0c;经常可能导致测试失败。 解决方法&#xff1a;尽量保持测试环境的稳定性&#xff0c;包括硬件、软件和网络等方面。 如何保持测试环境的稳定性&#xff1f; 要保持测试环境的稳定性&#xff0c;可…

从零开始,Docker进阶之路(二):Docker安装

Docker 要求 CentOS7 系统的内核版本在 3.10以上 1.通过 uname -r 命令查看你当前的内核版本 uname -r2. 使用 root 权限登录 Centos。确保 yum 包更新到最新。 yum -y update 慢慢等&#xff0c;小编也是等了十分钟之久 3.卸载旧版本(如果安装过旧版本的话) yum remove do…

元宇宙的未来趋势:Web3的潜在影响

元宇宙&#xff0c;一个日益受到关注的概念&#xff0c;代表着一个沉浸式的虚拟世界&#xff0c;其中用户可以进行社交、商业和娱乐活动。随着技术的发展&#xff0c;Web3逐渐成为推动元宇宙演变的重要力量。Web3以去中心化为核心&#xff0c;利用区块链、智能合约和其他创新技…

加密软件巅峰对决:Ping32 vs 天锐绿盾,谁是企业数据安全的守护者之王?

在信息安全日益重要的今天&#xff0c;企业加密软件已成为保护敏感数据的关键工具。在众多加密产品中&#xff0c;Ping32与天锐绿盾&#xff08;简称绿盾&#xff09;凭借其卓越的性能和丰富的功能&#xff0c;成为了企业用户关注的焦点。那么&#xff0c;在这场加密软件的巅峰…

干货分享 | TSMaster—LIN 唤醒与休眠机制

在汽车总线中常见的唤醒方式有硬线唤醒、网络唤醒和特定信号唤醒&#xff0c;而LIN总线则是通过休眠帧与唤醒电平来实现的&#xff0c;本文将介绍LIN的唤醒与休眠机制。 本文关键词&#xff1a;LIN 网络管理&#xff0c;休眠&#xff0c;唤醒 目录 Catalog 1. 网络管理 2. …

vue3开发中易遗漏的常见知识点

文章目录 组件样式的特性Scoped CSS之局部样式的泄露Scoped CSS之深度选择器CSS Modules在CSS中使用v-bind 非props属性继承组件通信父子组件的相互通信props/$emit父组件传递数据给子组件子组件传递数据给父组件 非父子组件的相互通信Provide/inject全局事件总线 组件插槽作用…

用Python与OpenCV的实践:实时面部对称性分析

目录 思路分析 整体代码 效果展示 总结 在当今计算机视觉领域&#xff0c;人脸识别和分析技术得到了广泛应用。无论是安全验证、社交媒体应用&#xff0c;还是美学研究&#xff0c;人脸特征的提取和分析都是关键技术之一。在这篇博客中&#xff0c;我们将深入探讨一个有趣的…

Arco HomeMenu - 无入侵式的个性化菜单配置插件

关于 Arco HomeMenu Arco HomeMenu 插件是一款对 odoo 菜单功能的增强工具&#xff0c;它的主要功能是允许用户个性化菜单收藏。主要通过分类文件夹及布局功能实现。 Arco HomeMenu 插件主要用于优化用户在 odoo 系统中的操作体验。通过插件功能&#xff0c;用户可以根据自己的…

innovus:如何报告SI

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 报告SI首先要设置si aware,报

79、Python之鸭子类型:没有听过鸭子类型?关键在于认知的转变

引言 不同于Java等静态类型的语言&#xff0c;Python基于动态类型系统的设计理念&#xff0c;使得Python在很多应用场景中&#xff0c;显得更急灵活、高效。而在动态类型系统中&#xff0c;有一个很重要的概念&#xff0c;就是“鸭子类型”。鸭子类型的背后&#xff0c;代表的…

一地通过率高达46.43%!为什么都说软考难?

从2023年上半年到2024年上半年&#xff0c;近三次考试&#xff0c;几个考区的软考通过率基本不超过13%。 然而根据近日陕西省科技资源统筹中心公布的数据&#xff0c;从1987年到2024年&#xff0c;陕西软考的总拿证率竟然高达46.43%。软考真的有大家认为的那么难吗&#xff1f;…

Unity场景内画车道线(根据五阶曲线系数)

之前做过使用Dreamteck Splines插件构建车道线之前需求是给定车道线的点位&#xff0c;根据点位来进行构建。 由于AI识别出来的点位不线性&#xff0c;画出来的车道线经常是歪七扭八&#xff0c;所以使用五阶曲线系数进行构建。 使用在线图形计算器进行测试构建&#xff0c;公式…

DATEDIF 函数用不了?DATEDIF函数怎么用我来告诉你

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f4c5; 在处理与时间相关的数据时&#xff0c;DATEDIF函数是Excel中一个非常有用的工具。DATEDIF函数可以计算两个日期之间的差异&#xff0c;无论是天数、月数还是年数。这在处理年龄计算、工龄统计或任何需要日期差…

大健康管理系统|健康综合咨询问诊平台设计与实现(源码+数据库+文档)

大健康管理系统目录 目录 健康综合咨询问诊平台设计与实现 一、前言 二、系统功能设计 三、系统实现 5.1用户信息管理 5.2 医生信息管理 5.3科室信息管理 5.1新闻信息管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码 六、论文…

docker笔记_数据卷、挂载

docker数据存储 概述数据卷&#xff08;Volumes&#xff09;特点操作 绑定挂载&#xff08;Bind Mounts&#xff09;内存挂载&#xff08;tmpfs&#xff09;总结 概述 镜像构建过程中&#xff0c;所产生的layer都是只读层&#xff0c;只有在创建容器时才会生成一个可写的容器层…

鸿蒙OpenHarmony【小型系统基础内核(虚拟内存管理)】子系统开发

虚拟内存管理 基本概念 虚拟内存管理是计算机系统管理内存的一种技术。每个进程都有连续的虚拟地址空间&#xff0c;虚拟地址空间的大小由CPU的位数决定&#xff0c;32位的硬件平台可以提供的最大的寻址空间为0-4GiB。整个4GiB空间分成两部分&#xff0c;LiteOS-A内核占据3Gi…

Go weak包前瞻:弱指针为内存管理带来新选择

在介绍Go 1.23引入的unique包的《Go unique包&#xff1a;突破字符串局限的通用值Interning技术实现》一文中&#xff0c;我们知道了unique包底层是基于internal/weak包实现的&#xff0c;internal/weak是一个弱指针功能的Go实现。所谓弱指针(Weak Pointer&#xff0c;也称为弱…

算法分享——《滑动窗口》

&#x1f68d;《长度最小的子数组》 &#x1f6b2;题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符…

Linux进程状态与进程优先级

目录 Linux进程状态与进程优先级 前置知识 并行与并发 时间片 进程状态 基本介绍 等待状态的本质 swap分区 Linux进程状态 Linux进程状态分类 运行状态&#xff08;Running&#xff09;与等待状态&#xff08;Sleeping&#xff09; 硬盘等待状态&#xff08;Disk S…

计算机视觉必备模型YOLO系列模型的知识点,提供YOLOv1-v8模型结构与代码实例

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉必备模型YOLO系列模型的知识点&#xff0c;提供YOLOv1-v8模型结构与代码实例。本文全面介绍了计算机视觉领域中必备的YOLO系列模型&#xff0c;详细梳理了YOLOv1至YOLOv8模型的结构及其演变过程。文章内容…