MyBatis (一)持久层框架-基础入门

发布于:2025-03-18 ⋅ 阅读:(19) ⋅ 点赞:(0)

目录

基础实现步骤

1 创建一个bean类

2 mapper(Dao层接口)类:

3 相关配置(在配置方法中实现)

4 测试方法:


MyBatis 是一款优秀的 持久层框架,用于简化 Java 应用与关系型数据库的交互。它通过灵活的 SQL 映射配置,将 Java 对象与数据库记录进行关联,同时保留了开发者对 SQL 的直接控制权。

MyBatis 凭借其 灵活性 和 对 SQL 的直接控制,成为许多开发者处理复杂数据库操作的首选。如果你希望避免传统 JDBC 的繁琐,同时保留 SQL 的透明度,MyBatis 是一个高效且实用的解决方案。

基础实现步骤

  1. 导入 MyBatis 依赖

  2. 配置数据源信息

  3. 编写一个 JavaBean 对应数据库一个表模型

  4. Mapper 接口与实现

    • 以前:Dao 接口 → Dao 实现 → 标注 @Repository 注解

    • 现在:Mapper 接口 → Mapper.xml 实现 → 标注 @Mapper 注解

    • (安装 MyBatisX 插件,自动为 Mapper 类生成 Mapper 文件)

    • 在 Mapper 文件中配置方法的实现 SQL

  5. 告诉 MyBatis 去哪里找 Mapper 文件

  6. 编写单元测试

项目模块初始化

1 创建一个bean类

package org.example.mybatis01.bean;

import lombok.Data;


@Data
public class Emp {
    private Integer id;
    private String name;
    private Integer age;
    private String gender;

    //生成构造方法除去id的构造方法
    public Emp(String name, Integer age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

}

2 mapper(Dao层接口)类:

package org.example.mybatis01.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.example.mybatis01.bean.Emp;

@Mapper//告诉Mybatis这是一个mapper接口
public interface EmpMapper {

    Emp getEmpById(Integer id);

}

3 相关配置(在配置方法中实现)

利用插件完善

在类名旁边按alt+回车,使用,mybatis创建一个xml文件,在资源目录下创建一个mapper文件夹

<?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="org.example.mybatis01.mapper.EmpMapper">
<!-- select标签代表一次查询   -->
    <select id="getEmpById" parameterType="int" resultType="org.example.mybatis01.bean.Emp">
        select * from first_tb where id = #{id}
    </select>

</mapper>

在properties中补充路径:(告诉mybatis去哪找Mapper文件)

#指定xml文件的位置(mybatis)
mybatis.mapper-locations=classpath:mapper/**.xml

4 测试方法:

直接注入接口 EmpMapper 而无需手动编写实现类,是因为 MyBatis 在底层通过动态代理自动生成了接口的实现类

MyBatis 通过动态代理生成接口的代理类(如 $Proxy 或 EnhancerByMyBatis

package org.example.mybatis01;

import org.example.mybatis01.dao.EmpMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Mybatis01ApplicationTests {

    @Autowired
    EmpMapper empMapper;
    @Test
    void contextLoads() {

        System.out.println(empMapper.getEmpById(1));
    }

}

运行结果: