场景

项目搭建专栏:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194

什么是自定义全局操作

根据MybatisPlus的AutoSqlInjector可以自定义各种你想要的sql注入到全局中。相当于

定义MyBatisPlus自动注入的方法。

之前需要在xml中进行配置的sql语句,现在通过扩展AutoSqlInjector在加载mybatis环境时就注入。

实现

1.在Mapper接口中定义相关的方法

package com.badao.mapper;import com.badao.beans.Employee;
import com.baomidou.mybatisplus.mapper.BaseMapper;/**** 泛型指定就是当前mapper接口所操作的实体类类型* @author Administrator* @Description:* @Time:2019年4月18日 下午8:36:59*/public interface EmployeeMapper extends BaseMapper<Employee> {/*** 自定义注入方法*/int deleteAll();}

2.扩展AutoSqlInjector的inject方法

项目下新建injector包,包下新建MySqlInjector

代码:

package com.badao.injector;import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.apache.ibatis.mapping.SqlSource;
import org.apache.ibatis.session.Configuration;import com.baomidou.mybatisplus.entity.TableInfo;
import com.baomidou.mybatisplus.mapper.AutoSqlInjector;/**** 自定义全局操作* @author Administrator* @Description:* @Time:2019年4月27日 下午12:18:42*/
public class MySqlInjector extends AutoSqlInjector {/**** 扩展inject方法,完成自定义全局操作*/@Overridepublic void inject(Configuration configuration, MapperBuilderAssistant builderAssistant, Class<?> mapperClass,Class<?> modelClass, TableInfo table) {// 将EmployeeMapper中定义的deleteAll,处理成对应的MappedStatement对象,加入到configuration对象中/* 执行 SQL ,动态 SQL 参考类 SqlMethod */String sql = "delete from " + table.getTableName();/* mapper 接口方法名一致 */String method = "deleteAll";//构建SqlSource对象SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);//构造一个删除的MapperedStastementthis.addDeleteMappedStatement(mapperClass, method, sqlSource);}}

3.在MP的全局策略配置中,配置自定义注入器

定义自定义注入器

打开项目的applicationContext.xml

<!-- 定义自定义注入器 -->
<bean id="mySqlInjector" class="com.badao.injector.MySqlInjector"></bean>

注入自定义全局操作

找到MP的全局策略配置的地方。

<!-- 定义MybatisPlus的全局策略配置--><bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration"><!-- 在2.3版本以后,dbColumnUnderline 默认值就是true 开启下划线到驼峰命名支持--><property name="dbColumnUnderline" value="true"></property><!-- 全局的主键策略   全局使用主键自增的方式  value为 0--><property name="idType" value="0"></property><!-- 全局的表前缀策略配置 --><!-- <property name="tablePrefix" value="tbl_"></property> --><!-- 注入自定义全局操作 --><property name="sqlInjector" ref="mySqlInjector"></property></bean>

4.进行测试

编写测试方法

/****  自定义全局配置*/@Testpublic void testdeleteAll() {int result = employeeMapper.deleteAll();System.out.println("一共删除了"+result);}

进行测试 前要注意是否注册性能分析插件,如果使用了则不能删除全表。

MyBatisPlus插件扩展_SqlExplainInterceptor执行分析插件的使用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89599695

运行测试

源码下载

https://download.csdn.net/download/badao_liumang_qizhi/11147754

MyBatisPlus中自定义全局操作流程相关推荐

  1. vue中自定义全局指令报错

    我主要从三个方面来检查 1.首先检查是否拼写错误,尽量粘贴,不要手写 2.区分好变量和字符串的差别 <p v-color="'red'">全局指令</p> ...

  2. php自定义函数全局声明,【phpcms-v9】phpcms-v9中自定义全局函数文件:extention.func.php...

    /** * extention.func.php 用户自定义函数库 * * @copyright(C) 2005-2010 PHPCMS * @licensehttp://www.phpcms.cn/ ...

  3. MyBatisPlus中全局Sql注入器应用_逻辑删除使用

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 MyBatisPlus中自定义全局操作流程: https: ...

  4. mybatis-plus的sql注入器实现自定义全局sql操作原理解析

    自定义自己的通用方法可以实现接口ISqlInjector,也可以继承抽象类 AbstractSqlInjector.注入通用方法 SQL 语句,然后继承 BaseMappe添加自定义方法,全局配置sq ...

  5. Mybatis-Plus自定义全局方法

    一 前言 最近做的一个项目是地理信息相关的,包含了一些地理位置信息字段,如Point ,Line,Geometry,数据库采用的是PostGreSql+Postgis ,数据库框架使用Mybatis- ...

  6. R语言ggplot2可视化:jupyter中设置全局图像大小、jupyter中自定义单个ggplot2图像结果的大小

    R语言ggplot2可视化:jupyter中设置全局图像大小.jupyter中自定义单个ggplot2图像结果的大小 目录

  7. 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)

    在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值) 参考文章: (1)在Android中自定义捕获Application全局异常,可以 ...

  8. php中的全局异常,tp5 API 自定义全局异常处理(中)

    我们先来梳理一下异常的分类: 异常分类 tp5 有一个全局异常处理类,如果我们想自己实现上面的分类,需要覆盖和重写默认的全局异常处理类. 我们现在在 api 模块的同级下新建一个 lib 文件夹,再新 ...

  9. MybatisPlus中@TableField注解的使用

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 基础搭建: https://blog.csdn.net/B ...

最新文章

  1. ospf cost 引起路由可以ping通但应用无法连接_路由算法(通网五)
  2. linux make makefile 内置变量 默认变量
  3. 文档过期打不开怎么办_网络上下载文档,常见的3个问题,一招教你快速解决!...
  4. 扩展虚拟机Ubuntu磁盘容量空间
  5. Head First JSP---随笔十(过滤器的威力)
  6. PyQt5 笔记6 -- 对话框(QDialog)
  7. 【CTSC2017】【BZOJ4903】吉夫特 卢卡斯定理 DP
  8. Mars——基于矩阵的统一分布式计算框架
  9. 9. 设计二个函数分别计算sinx和cosx_【数组分享】PHP函数array_udiff_assoc ()分享(20201128)...
  10. 类和接口的使用-类和成员可访问性最小化
  11. VOICEBOX: Speech Processing Toolbox for MATLAB
  12. mysql hash分区 创建_如何建mysql hash数据库分区
  13. php 导出tables,jquery+php实现导出datatables插件数据到excel的方法_php技巧
  14. resultset java 类型_java 中的resultset的类型
  15. 规则库捕获漏洞信息专用脚本
  16. 2022-03-25 Python作业1
  17. 全国软件2. 三人年龄
  18. 普通浏览器打开微信页面出现验证的解决方法
  19. 适合学计算机用的机械键盘,什么是机械键盘 机械键盘和普通键盘的区别
  20. 【CXY】JAVA基础 之 Map

热门文章

  1. Springboot集成nacos实现服务发现和配置中心
  2. linux管道原子性写入,write(2)/ read(2)linux中进程之间的原子性
  3. git commit 提交的时候报错husky > pre-commit hook failed 或者‘lint-staged‘ 不是内部或外部命令,也不是可运行的程序(解决办法)
  4. Mybatis的增删改查操作(包含动态代理,动态SQL标签,缓存,#与$的使用传入多参数,获取自增id等基本操作)
  5. mysql vpformysql引擎_MySQL InnoDB引擎B+树索引简单整理说明
  6. python在abaqus中的应用代码下载_Python-(source-code)-in--Abaqus Python语言在Abaqus中的应用(源码) - 下载 - 搜珍网...
  7. 如果政府强制开发linux应用,Linux开发环境及应用-中国大学mooc-题库零氪
  8. php tinyme_黄聪:TinyMCE 4 增强 添加样式、按钮、字体、下拉菜单和弹出式窗口
  9. python word转txt_Python办公自动化| word 表格转excel
  10. project 模板_施工进度计划表不会做?18个横道图自动生成模板,直接在线编辑...