写点什么

mybatis-plus 使用教程,java 面试题基础篇

作者:Java高工P7
  • 2021 年 11 月 10 日
  • 本文字数:1343 字

    阅读完需:约 4 分钟

1、无侵入

MyBatis-Plus 在 MyBatis 的基础上进行扩展,只做增强不做改变,引入 MyBatis-Plus 不会对现有的 MyBatis 框架产生任何影响,而且 MP 支持所有 MyBatis 原生的特性。

2、依赖少

仅仅依赖 MyBatis 以及 MyBatis-Spring

3、损耗小

启动即会注入基本 CRUD,性能基本无损耗,直接面向对象操作

4、预防 SQL 注入

内置 SQL 注入剥离器,有效预防 sql 注入攻击


MyBatis 基础知识总结 1】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 层代码,支持模板引擎,代码生成器类只需修改表名,并输入项目包结构即可,轻松惬意。


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.baomid


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


ou.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);

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
mybatis-plus使用教程,java面试题基础篇