Spring Boot使用注解方式整合MyBatis

文章目录

  • [实战讲稿:Spring Boot使用注解方式整合MyBatis](#实战讲稿:Spring Boot使用注解方式整合MyBatis)
    • 课程目标
    • 课程内容
      • [1. 创建员工映射器接口](#1. 创建员工映射器接口)
        • [1.1 创建子包](#1.1 创建子包)
        • [1.2 创建接口](#1.2 创建接口)
      • [2. 测试员工映射器接口](#2. 测试员工映射器接口)
        • [2.1 自动装配员工映射器](#2.1 自动装配员工映射器)
        • [2.2 测试按标识符查询员工方法](#2.2 测试按标识符查询员工方法)
        • [2.3 测试查询全部员工方法](#2.3 测试查询全部员工方法)
        • [2.4 测试插入员工方法](#2.4 测试插入员工方法)
        • [2.5 测试更新员工方法](#2.5 测试更新员工方法)
        • [2.6 测试按标识符删除员工方法](#2.6 测试按标识符删除员工方法)
      • [3. 解决字段名与属性名不一致的问题](#3. 解决字段名与属性名不一致的问题)
      • [4. 总结](#4. 总结)
    • 课后作业

实战讲稿:Spring Boot使用注解方式整合MyBatis

课程目标

  • 理解Spring Boot与MyBatis整合的基本概念
  • 学会使用注解方式在Spring Boot中创建MyBatis映射器接口
  • 掌握基本的CRUD操作
  • 学会解决字段名与属性名不一致的问题

课程内容

1. 创建员工映射器接口

1.1 创建子包
  • 在net.huawei.hrsys_ssm包下创建mapper子包。
1.2 创建接口
  • 在mapper子包中创建EmployeeMapper接口。
java 复制代码
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()测试方法。
java 复制代码
@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()测试方法。
java 复制代码
@Test
public void testFindAll() {
    List<Employee> employees = employeeMapper.findAll();
    employees.forEach(System.out::println);
}
2.4 测试插入员工方法
  • 创建testInsert()测试方法。
java 复制代码
@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()测试方法。
java 复制代码
@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()测试方法。
java 复制代码
@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进行更复杂的查询操作,如连接查询、分组查询等。
相关推荐
蜗牛互联网8 分钟前
Python Agent 工具调用:审批令牌、参数白名单和累计预算
java·开发语言·人工智能·windows·后端·python
环境栈笔记9 分钟前
指纹浏览器检查代理失败怎么排查?先分清代理、网络和检测服务
前端·人工智能·后端·自动化
武子康31 分钟前
ESP32 唤醒词标称 98%,为什么还要自己做验收?
人工智能·后端·agent
william_yangshun1 小时前
WordCraft 观察:纯 Rust 重写文字处理器,把文档变成可编程对象
开发语言·后端·rust·文档自动化
IT_陈寒1 小时前
SpringBoot开发实战:从入门到精通
前端·人工智能·后端
geovindu2 小时前
rust: pool Pattern (续)
开发语言·后端·设计模式·rust·对象池简写模式
一条泥憨鱼2 小时前
拦截器与过滤器:一次请求穿过 Spring 时,会先经过谁呢
java·开发语言·后端·spring
郑州光合科技余经理2 小时前
本地生活服务系统:预约状态和进度通知接口怎么拆
java·开发语言·前端·javascript·后端·php·生活
tianbin9112 小时前
大模型训练全流程中,API聚合网关如何解决多模型调度难题
网络·后端
RuoyiOffice2 小时前
Springboot + Vue3 + FormCreate表单引擎,直接用AI对话进行单据设计,告别拖拽画表单
spring boot·低代码·vue3·sse·formcreate·ruoyi office·ai表单