【MyBatis 2】MyBatis-Plus,java 分布式框架技术方案
仅仅依赖 MyBatis 以及 MyBatis-Spring
3、损耗小
启动即会注入基本 CRUD,性能基本无损耗,直接面向对象操作
4、预防 SQL 注入
内置 SQL 注入剥离器,有效预防 sql 注入攻击
5、通用 CRUD 操作
内置通用 mapper、通用 service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求,CRUD 程序员的噩梦。
6、多种主键策略
支持多达 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 层代码,支持模板引擎,代码生成器类只需修改表名,并输入项目包结构即可,轻松惬意。
![](https://static001.geekbang.org/infoq/f2/f217c44cd14eb8b0cbde310d52baf42e.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
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);
评论