MyBatisPlus中自定义全局操作流程
场景
项目搭建专栏:
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中自定义全局操作流程相关推荐
- vue中自定义全局指令报错
我主要从三个方面来检查 1.首先检查是否拼写错误,尽量粘贴,不要手写 2.区分好变量和字符串的差别 <p v-color="'red'">全局指令</p> ...
- php自定义函数全局声明,【phpcms-v9】phpcms-v9中自定义全局函数文件:extention.func.php...
/** * extention.func.php 用户自定义函数库 * * @copyright(C) 2005-2010 PHPCMS * @licensehttp://www.phpcms.cn/ ...
- MyBatisPlus中全局Sql注入器应用_逻辑删除使用
场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 MyBatisPlus中自定义全局操作流程: https: ...
- mybatis-plus的sql注入器实现自定义全局sql操作原理解析
自定义自己的通用方法可以实现接口ISqlInjector,也可以继承抽象类 AbstractSqlInjector.注入通用方法 SQL 语句,然后继承 BaseMappe添加自定义方法,全局配置sq ...
- Mybatis-Plus自定义全局方法
一 前言 最近做的一个项目是地理信息相关的,包含了一些地理位置信息字段,如Point ,Line,Geometry,数据库采用的是PostGreSql+Postgis ,数据库框架使用Mybatis- ...
- R语言ggplot2可视化:jupyter中设置全局图像大小、jupyter中自定义单个ggplot2图像结果的大小
R语言ggplot2可视化:jupyter中设置全局图像大小.jupyter中自定义单个ggplot2图像结果的大小 目录
- 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)
在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值) 参考文章: (1)在Android中自定义捕获Application全局异常,可以 ...
- php中的全局异常,tp5 API 自定义全局异常处理(中)
我们先来梳理一下异常的分类: 异常分类 tp5 有一个全局异常处理类,如果我们想自己实现上面的分类,需要覆盖和重写默认的全局异常处理类. 我们现在在 api 模块的同级下新建一个 lib 文件夹,再新 ...
- MybatisPlus中@TableField注解的使用
场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 基础搭建: https://blog.csdn.net/B ...
最新文章
- ospf cost 引起路由可以ping通但应用无法连接_路由算法(通网五)
- linux make makefile 内置变量 默认变量
- 文档过期打不开怎么办_网络上下载文档,常见的3个问题,一招教你快速解决!...
- 扩展虚拟机Ubuntu磁盘容量空间
- Head First JSP---随笔十(过滤器的威力)
- PyQt5 笔记6 -- 对话框(QDialog)
- 【CTSC2017】【BZOJ4903】吉夫特 卢卡斯定理 DP
- Mars——基于矩阵的统一分布式计算框架
- 9. 设计二个函数分别计算sinx和cosx_【数组分享】PHP函数array_udiff_assoc ()分享(20201128)...
- 类和接口的使用-类和成员可访问性最小化
- VOICEBOX: Speech Processing Toolbox for MATLAB
- mysql hash分区 创建_如何建mysql hash数据库分区
- php 导出tables,jquery+php实现导出datatables插件数据到excel的方法_php技巧
- resultset java 类型_java 中的resultset的类型
- 规则库捕获漏洞信息专用脚本
- 2022-03-25 Python作业1
- 全国软件2. 三人年龄
- 普通浏览器打开微信页面出现验证的解决方法
- 适合学计算机用的机械键盘,什么是机械键盘 机械键盘和普通键盘的区别
- 【CXY】JAVA基础 之 Map
热门文章
- Springboot集成nacos实现服务发现和配置中心
- linux管道原子性写入,write(2)/ read(2)linux中进程之间的原子性
- git commit 提交的时候报错husky > pre-commit hook failed 或者‘lint-staged‘ 不是内部或外部命令,也不是可运行的程序(解决办法)
- Mybatis的增删改查操作(包含动态代理,动态SQL标签,缓存,#与$的使用传入多参数,获取自增id等基本操作)
- mysql vpformysql引擎_MySQL InnoDB引擎B+树索引简单整理说明
- python在abaqus中的应用代码下载_Python-(source-code)-in--Abaqus Python语言在Abaqus中的应用(源码) - 下载 - 搜珍网...
- 如果政府强制开发linux应用,Linux开发环境及应用-中国大学mooc-题库零氪
- php tinyme_黄聪:TinyMCE 4 增强 添加样式、按钮、字体、下拉菜单和弹出式窗口
- python word转txt_Python办公自动化| word 表格转excel
- project 模板_施工进度计划表不会做?18个横道图自动生成模板,直接在线编辑...