Spring Boot使用配置方式整合MyBatis
文章目录
- 一、实战目标
- 二、步骤概览
- 1. 创建部门映射器接口
- 2. 创建映射器配置文件
- 3. 配置全局映射器
- 4. 测试映射器接口
- 三、详细步骤
- 1、创建部门映射器接口
- 2、创建映射器配置文件
- 3、配置全局映射器
- 4、测试映射器接口
- 四、结语
一、实战目标
在本实战课程中,我们将学习如何在Spring Boot项目中使用配置方式整合MyBatis框架,并实现部门管理功能。
二、步骤概览
- 创建部门映射器接口
- 创建映射器配置文件
- 配置全局映射器
- 测试映射器接口
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操作。