MyBatisPlus(1):快速入门

我们知道,MyBatis是一个优秀的操作数据库的持久层框架(优秀持久层框架------MyBatis),其基于底层的JDBC进行高度封装,极大的简化了开发。但是对于单表操作而言,我们需要重复地编写简单的CRUD语句 。这其实是不必要的,为此,MyBatisPlus框架在MyBatis框架的基础上进一步封装,提供了大量操作单表CRUD的方法,进一步的提高了我们的开发效率。

MyBatisPlus框架简介

MyBatisPlus和MyBatis的关系

顾名思义,MyBatisPlusMyBatis的后面添加了plus,从词义上来看应该是MyBatis的升级版;事实也如此,MyBatisPlus框架完全支持MyBatis框架的用法(我们在引入了MyBatisPlus框架的依赖之后就不需要再引入MyBatis框架的依赖了) 。那是不是意味着MyBatisPlus将要取代MyBatis了?完全不是这样:在MyBatisPlus的官网上,开发者是用这样的图来描述二者的关系的:

TO BE THE BEST PARTNER OF MYBATIS(成为MyBatis最好的伙伴),这是开发者的原话。MyBatisMyBatisPlus二者就好像魂斗罗的两兄弟一样,共同为简化我们的开发而努力。MyBatisPlus框架绝对不是为了取代MyBatis框架出现的,并且MyBatisPlus框架目前也没有能力完全取代MyBatis框架。

MyBatisPlus框架的特点

润物无声

MyBatisPlus框架只做增强而不做改变,因为引入它不会对现有的工程产生影响,如丝般顺滑。

效率至上

MyBatisPlus框架只需要简单配置,即可快速的进行单表CRUD操作,从而节省大量的时间。

丰富功能

代码生成、自动分页、逻辑删除、自动填充、拦截器等功能一应俱全。

广泛认可

连续5年 获得开源中国年度最佳开源项目殊荣,Github累计16KStar

这么介绍MyBatisPlus框架也许不够直观,那让我们使用一个快速入门的DEMO来直观展示MyBatisPlus框架是如何简化我们的开发的。

MyBatisPlus框架入门案例

在项目中使用MyBatisPlus框架一共可分为3步。

引入依赖

想要使用一个框架,我们肯定需要引入对应的依赖,以下是MyBatisPlus框架的最新依赖:

java 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.12</version>
</dependency>

因为上文提到了MyBatisPlus框架完全支持MyBatis框架的用法 ,所以说我们在引入了MyBatisPlus框架依赖之后,如果想要使用MyBatis框架,无需额外的引入,即可使用。

自定义Mapper继承BaseMapper接口

MyBatisPlus框架提供了很多的方法来简化我们的单表CRUD操作这些方法被封装在了一个名为BaseMapper<>的接口中 ,想要使用这些方法,我们就需要创建一个接口来继承这个接口 ,注意,在继承时,需要指明BaseMapper<>中的泛型:

EMP实体类:

java 复制代码
package com.wzb.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Integer gender;
    private String phone;
    private String image;
    private Integer job;
    private LocalDate entryDate;
    private Integer deptId;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

自定义Mapper继承BaseMapper接口:

java 复制代码
package com.wzb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wzb.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface EmpMapper extends BaseMapper<Emp> {
}

需要注意,在使用自定义Mapper继承BaseMapper接口的时候,需要指明BaseMapper的泛型。

使用对应方法

此时我们就可以使用BaseMapper中封装好的方法来简化单表查询了:

java 复制代码
package com.wzb;

import com.wzb.mapper.EmpMapper;
import com.wzb.pojo.Emp;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.time.LocalDate;
import java.time.LocalDateTime;

@SpringBootTest
class JavaWeb13MyBatisPlusApplicationTests {

    @Autowired
    private EmpMapper empMapper;

    /**
     * 查询测试
     */
    @Test
    public void queryTest() {
        Emp emp = empMapper.selectById(1);
        System.out.println(emp);
    }

    /**
     * 增加测试
     */
    @Test
    public void insertTest() {
        Emp emp = new Emp();
        emp.setId(100);
        emp.setUsername("测试员工");
        emp.setPassword("123456");
        emp.setName("测试员工");
        emp.setGender(0);
        emp.setPhone("1310000001");
        emp.setImage("https://123.com");
        emp.setJob(1);
        emp.setEntryDate(LocalDate.now());
        emp.setDeptId(1);
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.insert(emp);
    }

    /**
     * 删除测试
     */
    @Test
    public void deleteTest() {
        empMapper.deleteById("100");
    }

    /**
     * 修改测试
     */
    @Test
    public void updateTest() {
        Emp emp = new Emp();
        emp.setId(1);
        emp.setUsername("张三");
        empMapper.updateById(emp);
    }

}

这是一个简单的CRUD示例,包含了对于EmpCRUD,但是我们的EmpMapper中是没有任何代码的,仅仅只是继承了BaseMapper的接口 ,这几个方法分别使用了BaseMapper接口中的selectByIdinsertdeleteByIdupdateById方法,这些方法都是十分简单的CRUD方法,编码及其规范,都可以见名知意,看到方法名就知道是干什么的,需要给方法传递什么参数。

总结

MyBatisPlus框架在MyBatis框架的基础上进一步封装,提供了大量操作单表CRUD的方法,进一步的提高了我们的开发效率。MyBatisPlus框架的快速入门极其简单,但是MyBatis主要聚焦于单表查询的简化,对于简单的CRUD的SQL语句,开发者无需手写,直接使用封装方法即可,但是对于复杂的多表联查的SQL语句,还是需要开发者自己编写SQL语句完成 。所以说MyBatisPlus框架和MyBatis框架都是需要我们掌握的,MyBatisPlus框架并不能直接代替MyBatis框架。

在这个快速入门的Demo中,我们使用了BaseMapper中封装的方法来简化查询,那MyBatisPlus框架是如何知道这些方法需要操作数据库中的哪一张表呢?且听下文分解。

相关推荐
Magnum Lehar12 分钟前
vulkan游戏引擎的核心交换链swapchain实现
java·前端·游戏引擎
南瓜胖胖23 分钟前
【R语言编程绘图-plotly】
开发语言·plotly·r语言
bobz96523 分钟前
libvirt unix_sock_dir 控制三种 socket 所在目录
后端
半青年24 分钟前
IEC61850规约客户端软件开发实战(第二章)
java·c++·qt·网络协议·c#·信息与通信·iec61850
zzj_26261035 分钟前
头歌java课程实验(学习-Java字符串之正则表达式之元字符之判断字符串是否符合规则)
java·学习·正则表达式
@Turbo@43 分钟前
【QT】在QT6中读取文件的方法
开发语言·数据库·qt
ArabySide1 小时前
【EF Core】 EF Core 批量操作的进化之路——从传统变更跟踪到无跟踪更新
数据库·.net·efcore
_extraordinary_1 小时前
Java 异常
java·开发语言
moz与京1 小时前
【数据结构】字符串操作整理(C++)
开发语言·数据结构·c++
招财进宝。。1 小时前
c# 获取电脑 分辨率 及 DPI 设置
开发语言·c#·电脑