【Mybatis-Plus 学习笔记】1、MP 简介及入门实例

Mybatis-Plus 简介


什么是 MyBatis-Plus

Mybatis-Plus:为简化开发而生

MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改变。使得我们可以可以在 Mybatis 开发的项目上直接进行升级为 Mybatis-plus,正如它对自己的定位,它能够帮助我们进一步简化开发过程,提高开发效率。

Mybatis-Plus 其实可以看作是对 Mybatis 的再一次封装,升级之后,对于单表的 CRUD 操作,调用 Mybatis-Plus 所提供的 API 就能够轻松实现,此外还提供了各种查询方式、分页等行为。最最重要的,开发人员还不用去编写 XML,这就大大降低了开发难度

其官方主页为:https://mp.baomidou.com。

Mybatis-Plus 的特点

  1. 无侵入,损耗小**

  2. 强大的 CURD 操作

  3. 支持 Lambda 形式调用

  4. 支持主键自动生成

  5. 支持自定义全局通用模式

  6. 支持 ActiveRecord 模式

  7. 内置代码生成器、分页插件、性能分析器和全局拦截插件

  8. ……

Mybatis-Plus 结构

源自官网

快速入门示例


数据库准备

我们依旧沿用官方文档中提供的实例来进行,那么我们首先来创建一个数据库并进入:

drop database if exists mydb;

create database mydb;

use mydb;

然后创建一个员工表,主要有 idnamesexemail 四大属性。

create table employee(

id int primary key not null,

name varchar(100) null,

sex varchar(10) null,

email varchar(255) null

)

然后插入部分数据:

DELETE FROM employee;

INSERT INTO employee (id, name, sex, email) VALUES

(1, ‘张三’, ‘男’, ‘zhangsan@cunyu1943.com’),

(2, ‘李四’, ‘女’, ‘lisi@cunyu1943.com’),

(3, ‘王五’, ‘男’, ‘wangwu@cunyu1943.com’);

SpringBoot 项目

这里我利用的是 IDEA 创建的一个 SpringBoot 项目,创建后,主要需要注意的有以下几点。

  1. 添加依赖

除开创建 SpringBoot 项目所需的必要依赖之外,我们还需要引入 MP 和 MySQL 的依赖。

com.baomidou

mybatis-plus-boot-starter

mysql

mysql-connector-java

runtime

  1. 数据库配置

依赖添加完成之后,到配置文件 application.yml 中去添加数据库的相关配置(注意:官方创建的配置文件是 application.properties,我们需要手动把它的后缀名改成 .yml)。

spring:

datasource:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://localhost:3306/mydb

password: 12345

username: root

application:

name: employee

  1. 项目整体结构

项目创建完成后,我们最终的项目目录结构如下图所示:

编码

完成数据库准备工作和建立 SpringBoot 项目之后,接下来的工作就是编码了。

  1. 实体类编写

实体类也就对应我们刚才所建立的数据表 employee。因为这里使用了 Lombok 插件,所以可以看到在类上多了一个 @Data 的注解,但是少了 getter、setter 方法,实现了代码的简洁化,大家如果还不知道这个插件,可以去了解下,后续我可能也会写一篇关于这个插件的文章,可以关注一下。

package com.cunyu.employee.entity;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.annotation.TableId;

import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

/**

  • Created with IntelliJ IDEA.

  • @author : cunyu

  • @version : 1.0

  • @project : Employee

  • @package : com.cunyu.employee.entity

  • @className : Employee

  • @createTime : 2021/8/7 17:33

  • @description : 员工实体类

*/

@Data

@TableName(“employee”)

public class Employee {

/**

  • 员工 id

*/

@TableId(“id”)

private Long id;

/**

  • 员工姓名

*/

private String name;

/**

  • 员工性别

*/

private String sex;

/**

  • 员工邮件

*/

private String email;

}

  1. Mapper 接口编写

这里 EmployeeMapper 继承自 MP 中 BaseMapper,它里边已经提供了许多方法,可以供我们使用。

package com.cunyu.employee.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.cunyu.employee.entity.Employee;

/**

  • Created with IntelliJ IDEA.

  • @author : cunyu

  • @version : 1.0

  • @project : Employee

  • @package : com.cunyu.employee.mapper

  • @className : EmployeeMapper

  • @createTime : 2021/8/7 17:45

  • @description : 员工 Mapper 类

*/

public interface EmployeeMapper extends BaseMapper {

}

以下是 BaseMapper 中所提供的一些方法,通过继承该接口,我们就可以不用编写 mapper.xml 也可以获得 CRUD 功能了。

package com.baomidou.mybatisplus.core.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;

import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.core.toolkit.Constants;

import org.apache.ibatis.annotations.Param;

import java.io.Serializable;

import java.util.Collection;

import java.util.List;

import java.util.Map;

/**

  • Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能

  • 这个 Mapper 支持 id 泛型

  • @author hubin

  • @since 2016-01-23

*/

public interface BaseMapper extends Mapper {

/**

  • 插入一条记录

  • @param entity 实体对象

*/

int insert(T entity);

/**

  • 根据 ID 删除

  • @param id 主键ID

*/

int deleteById(Serializable id);

/**

  • 根据 columnMap 条件,删除记录

  • @param columnMap 表字段 map 对象

*/

int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

/**

  • 根据 entity 条件,删除记录

  • @param queryWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)

*/

int delete(@Param(Constants.WRAPPER) Wrapper queryWrapper);

/**

  • 删除(根据ID 批量删除)

  • @param idList 主键ID列表(不能为 null 以及 empty)

*/

int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

/**

  • 根据 ID 修改

  • @param entity 实体对象

*/

int updateById(@Param(Constants.ENTITY) T entity);

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友

三面蚂蚁金服成功拿到offer后,他说他累了

三面蚂蚁金服成功拿到offer后,他说他累了

s.WRAPPER) Wrapper queryWrapper);

/**

  • 删除(根据ID 批量删除)

  • @param idList 主键ID列表(不能为 null 以及 empty)

*/

int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

/**

  • 根据 ID 修改

  • @param entity 实体对象

*/

int updateById(@Param(Constants.ENTITY) T entity);

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友

[外链图片转存中…(img-pns2kFjZ-1714515616041)]

[外链图片转存中…(img-jvxbkgwf-1714515616041)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值