【MyBatis 2】MyBatis-Plus,java 多线程常见面试题
支持多达 4 种主键策略(内含分布式唯一 ID 生成器),可自由配置,完美解决主键问题。
AUTO 数据库 ID 自增
INPUT 用户输入 ID
ID_WORKER 全局唯一 ID,Long 类型的主键
ID_WORKER_STR 字符串全局唯一 ID
UUID 全局唯一 ID,UUID 类型的主键
NONE 该类型为未设置主键类型
主键生成的几种方式:
1、数据库自增长
2、UUID
3、Redis 生成 id
7、支持热加载
mapper 对应的 xml 支持热加载,对于简单的 CRUD 操作,甚至可以无 xml 启动。
注意:3.0.6
版本上移除了该功能,不过最新快照版已加回来并打上废弃标识,预计3.1.0
版本上完全移除
8、支持 Active Record
Active Record(简称 AR),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。
MyBatis-Plus 对 AR 的支持,仅需要继承 Model 类并实现主键指定方法即可。
9、支持代码生成
采用代码或者 Maven 插件可快速生成 mapper、model、service、controller 层代码,支持模板引擎,代码生成器类只需修改表名,并输入项目包结构即可,轻松惬意。

10、支持自定义全局通用操作
支持全局通用方法注入
11、支持关键词自动转义
支持数据库关键词自动转移,还可以自定义关键词
12、内置分页插件
基于 Mybatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于写基本 List 查询。
分页?初级程序员的噩梦,现在?so easy!
13、内置性能分析插件
可输出 sql 语句及执行时间,建议开发测试阶段启用。
14、内置全局拦截插件
提供全表 delete、update 操作,智能分析阻断,预防误操作。
三、BaseMapper
在使用 MyBatis-Plus 中我们经常用到 BaseMapper 接口,我就是因为 BaseMapper 才写的这篇博客,真的是菜鸡的很。
BaseMapper 是利用 MyBatis 接口编程的实现机制,其默认提供了一系列的增删改查的基础方法,并且开发人员对于这些基础操作不需要写 SQL 进行处理操作(Mybatis 提供的机制就是需要开发人员在 mapper.xml 中提供 sql 语句),那样我们可以猜测肯定是 Mybatis-Plus 完成了 BaseMapper 接口提供的方法的 SQL 语句的生成操作。
BaseMapper 类:
package com.baomidou.mybatisplus.core.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
public interface BaseMapper<T> {
int insert(T var1);
int deleteById(Serializable var1);
int deleteByMap(@Param("cm") Map<String, Object> var1);
int delete(@Param("ew") Wrapper<T> var1);
int deleteBatchIds(@Param("coll") Collection<? extends Serializable> var1);
int updateById(@Param("et") T var1);
评论