当前位置: 首页 > article >正文

Spring Boot使用配置方式整合MyBatis

文章目录

  • 一、实战目标
  • 二、步骤概览
    • 1. 创建部门映射器接口
    • 2. 创建映射器配置文件
    • 3. 配置全局映射器
    • 4. 测试映射器接口
  • 三、详细步骤
    • 1、创建部门映射器接口
    • 2、创建映射器配置文件
    • 3、配置全局映射器
    • 4、测试映射器接口
  • 四、结语

在这里插入图片描述

一、实战目标

在本实战课程中,我们将学习如何在Spring Boot项目中使用配置方式整合MyBatis框架,并实现部门管理功能。

二、步骤概览

  1. 创建部门映射器接口
  2. 创建映射器配置文件
  3. 配置全局映射器
  4. 测试映射器接口

1. 创建部门映射器接口

net.huawei.hrsys_ssm.mapper包下创建DepartmentMapper接口,使用@Mapper注解标记。

2. 创建映射器配置文件

resources/mapper目录下创建DepartmentMapper.xml,定义SQL映射。

3. 配置全局映射器

在MyBatis配置文件中指定映射器配置文件位置和别名路径。

4. 测试映射器接口

创建TestDepartmentMapper类,使用@SpringBootTest注解进行测试。

三、详细步骤

1、创建部门映射器接口

@Mapper
public interface DepartmentMapper {
    int insert(Department department);
    int deleteById(int id);
    int update(Department department);
    Department findById(int id);
    List<Department> findAll();
}

2、创建映射器配置文件

  • DepartmentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="net.huawei.hrsys_ssm.mapper.DepartmentMapper">
    <!-- 插入部门记录 -->
    <insert id="insert" parameterType="Department"
            useGeneratedKeys="true" keyProperty="id">
        insert into department (name, number) values (#{name}, #{number});
    </insert>

    <!-- 删除部门记录 -->
    <delete id="deleteById" parameterType="int">
        delete from department where id = #{id};
    </delete>

    <!-- 更新部门记录 -->
    <update id="update" parameterType="Department">
        update department set name = #{name}, number = #{number} where id = #{id};
    </update>

    <!-- 查询全部部门 -->
    <select id="findAll" resultType="Department">
        select * from department;
    </select>

    <!-- 创建结果映射,一个部门对应多个员工构成的集合 -->
    <resultMap id="DepartmentWithEmployees" type="Department">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="number" column="number"/>
        <collection property="employees" javaType="list" ofType="Employee">
            <id property="id" column="e_id"/>
            <result property="age" column="age"/>
            <result property="gender" column="gender"/>
            <result property="name" column="e_name"/>
            <result property="number" column="e_number"/>
            <result property="depId" column="dep_id"/>
        </collection>
    </resultMap>

    <!-- 按标识符查询部门记录 -->
    <select id="findById" resultMap="DepartmentWithEmployees">
        select d.*, e.id e_id, e.age, e.gender, e.name e_name, e.number e_number, e.dep_id
            from department d left outer join employee e on d.id = e.dep_id
            where d.id = #{id};
    </select>
</mapper>

3、配置全局映射器

mapper-locations: classpath:mapper/*.xml
type-aliases-package: net.huawei.hrsys_ssm.bean

在这里插入图片描述

4、测试映射器接口

package net.huawei.hrsys_ssm;

import net.huawei.hrsys_ssm.bean.Department;
import net.huawei.hrsys_ssm.mapper.DepartmentMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

/**
 * 功能:测试部门映射器接口
 * 作者:华卫
 * 日期:2024年09月25日
 */
@SpringBootTest
public class TestDepartmentMapper {
    @Autowired // 自动装配部门映射器
    private DepartmentMapper departmentMapper;

    @Test // 测试查询全部部门
    public void testFindAll() {
        // 调用部门映射器的查询全部部门方法
        List<Department> departments = departmentMapper.findAll();
        // 利用Lambda表达式遍历部门列表
        departments.forEach(department -> System.out.println(department));
    }

    @Test // 测试按标识符查询部门
    public void testFindById() {
        // 定义标识符
        int id = 1;
        // 调用部门映射器的按标识符查询部门方法
        Department department = departmentMapper.findById(id);
        // 判断部门是否查询成功
        if (department != null) {
            System.out.println(department);
        } else {
            System.out.println("标识符为[" + id + "]的部门不存在~");
        }
    }

    @Test // 测试插入部门
    public void testInsert() {
        // 创建部门对象
        Department department = new Department();
        // 设置部门对象属性
        department.setName("后勤部");
        department.setNumber(5);
        // 调用部门映射器的插入方法
        int count = departmentMapper.insert(department);
        // 判断部门是否插入成功
        if (count > 0) {
            System.out.println("恭喜,部门记录插入成功~");
            System.out.println("插入的记录:" + departmentMapper.findById(5));
        } else {
            System.out.println("遗憾,部门记录插入失败~");
        }
    }

    @Test // 测试更新部门
    public void testUpdate() {
        // 查询id为5的部门
        Department department = departmentMapper.findById(5);
        // 输出更新前记录
        System.out.println("记录更新前:" + department);
        // 设置部门对象属性
        department.setName("保卫部");
        department.setNumber(555);
        // 调用部门映射器的更新部门方法
        int count = departmentMapper.update(department);
        // 判断部门是否更新成功
        if (count > 0) {
            System.out.println("恭喜,部门记录更新成功~");
            // 输出更新后记录
            System.out.println("记录更新后:" + departmentMapper.findById(5));
        } else {
            System.out.println("遗憾,部门记录更新失败~");
        }
    }

    @Test // 测试按标识符删除员工
    public void testDeleteById() {
        // 输出待删除记录
        System.out.println("待删除记录:" + departmentMapper.findById(5));
        // 调用部门映射器的按标识符删除部门方法
        int count = departmentMapper.deleteById(5);
        // 判断部门是否删除成功
        if (count > 0) {
            System.out.println("恭喜,部门记录删除成功~");
        } else {
            System.out.println("遗憾,部门记录删除失败~");
        }
    }
}

四、结语

通过本课程,你将掌握Spring Boot与MyBatis的整合,并能够实现部门管理的CRUD操作。


http://www.kler.cn/a/320581.html

相关文章:

  • 基于单片机智能温室大棚监测系统
  • Tomcat启动过程中cmd窗口(控制台)中文乱码的问题
  • 基于Java和Vue实现的上门做饭系统上门做饭软件厨师上门app
  • Python 正则表达式使用指南
  • STM32保护内部FLASH
  • 正则表达式语法详解(python)
  • 【Hadoop】一、Hadoop入门:基础配置、集群配置、常用脚本
  • 记录docker phpadmin 链接 docker mysql
  • MQTT客户端实战:从连接到通信。详细说明MQTT客户端和MQTT代理进行通信
  • 微服务Docker相关指令
  • 使用python搭建Web项目
  • swiper3匀速滚动会卡顿问题,已解决
  • Linux线程同步—竞态条件与互斥锁、读写锁(C语言)
  • <Java>String类型变量的使用
  • 基于Python flask的医院管理学院,医生能够增加/删除/修改/删除病人的数据信息,有可视化分析
  • 【c语言数据结构】栈的详解! 超级详细!(模拟实现,OJ练习题)
  • kubernetes K8S 挂载分布式存储 ceph
  • 算法基础8-双链表
  • Xcode16 iOS18 编译问题适配
  • 微信小程序教程:如何在个人中心实现头像贴纸功能
  • python爬虫解析工具BeautifulSoup(bs4)和CSS选择器——处理HTML和XML数据(7)
  • Windows系统修改Tomcat虚拟机内存参数
  • 《CUDA编程》3.简单CUDA程序的基本框架
  • 计算机毕业设计python+spark知识图谱房价预测系统 房源推荐系统 房源数据分析 房源可视化 房源大数据大屏 大数据毕业设计 机器学习
  • RuoYi-App根据不同角色权限实现功能按钮显隐
  • OpenHarmony(鸿蒙南向)——平台驱动指南【I2C】