mybatis plus的插件扩展
一、jdbc的一般模式
1、建立连接
2、创建statement
3、设置参数并执行
4、解析结果
5、释放资源
个性化的部分是 sql语句 参数映射 结果映射
二、mybatis的映射器
MappedStatement = SqlCommandType(CRUD的类别)+SqlSource+ParameterMap+ResultMap+BoundSql
SqlSource:原始xml中设置的sql语句,还没有解释loop等语义
BoundSql: loop、while等语义处理完之后的语句,一般带?和参数等信息
BoundSql = sql(语句)+ parameterObject(入参) + ParameterMapping(参数映射)
三、mybatis的4大对象
Executor=StatementHandler(预编译、设置?、执行)+ParameterHandler(塞参数)+ResultHandler(结果映射)
四、mybatis的插件机制
1、interceptor抽象(插件)
核心是一层一层的包装,在invoke的时候进行hack,代理的时候是从最外层到最内层的
public interface Interceptor {
// 代理的具体逻辑
Object intercept(Invocation invocation) throws Throwable;
// 生成代理对象
default Object plugin(Object target) {
return Plugin.wrap(target, this);
}
// 初始化属性
default void setProperties(Properties properties) {
// NOP
}
}
2、MetaObject 操作对象的属性
3、interceptor拦截的是4大对象之一
五、mybatis plus的插件机制
1、自己抽象了InnerInterceptor
2、手动创建MybatisPlusInterceptor这个bean,并设置相关的InnerInterceptor
InnerInterceptor调用流程:
一、Executor的plugin
select语句
1》 willDoQuery
2》 beforeQuery
update语句
1》willDoUpdate
2》beforeUpdate
二、StatementHandler的prepare
例子:
@Bean
@ConditionalOnMissingBean(value = { OptimisticLockerInnerInterceptor.class })
public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() {
OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor = new OptimisticLockerInnerInterceptor();
return optimisticLockerInnerInterceptor;
}
// 租户隔离
@Bean
@ConditionalOnMissingBean(value = { TenantLineInnerInterceptor.class })
public TenantLineInnerInterceptor tenantLineInnerInterceptor() {
TenantLineInnerInterceptor tenantLineInnerInterceptor = new TenantLineInnerInterceptor();
TenantLineHandler handler = new TenantLineHandler() {
public Expression getTenantId() {
return null;
}
public String getTenantIdColumn() {
return "tenant_id";
}
public boolean ignoreTable(String tableName) {
return false;
}
};
tenantLineInnerInterceptor.setTenantLineHandler(
handler
);
return tenantLineInnerInterceptor;
}
// 总集成
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor());
interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
interceptor.addInnerInterceptor(dataPermissionInterceptor());
interceptor.addInnerInterceptor(illegalSQLInnerInterceptor());
interceptor.addInnerInterceptor(paginationInnerInterceptor());
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
interceptor.addInnerInterceptor(tenantLineInnerInterceptor());
return interceptor;
}
select语句的语法
https://dev.mysql.com/doc/refman/8.0/en/select.html
相关推荐
MyBatis Plus(简称iMybatis)是一款基于MyBatis框架的扩展插件,它旨在简化MyBatis的常规操作,提供更为便捷的 CRUD(创建、读取、更新、删除)功能,以及丰富的条件构造器,让数据库操作更加简单。在3.2.1这个版本...
MyBatis Plus是一款基于MyBatis框架的扩展工具,它为开发者提供了更便捷的数据操作功能,简化了在MyBatis中的基本 CRUD(创建、读取、更新、删除)操作。在2.7版本中,MyBatis Plus进一步优化了性能,并增加了一些新...
使用IDEA的MyBatis-Plus插件,可以显著提升开发效率,减少手动编写SQL和基础业务代码的时间,同时也能降低出错概率,提高代码质量。 总结来说,MyBatis-Plus作为MyBatis的扩展,提供了一系列强大的数据库操作功能...
总的来说,MyBatis Plus插件是针对IntelliJ IDEA的增强工具,它优化了在MyBatis Plus环境下的开发体验,尤其是对Mapper接口和XML映射文件的管理,使得开发人员能更专注于业务逻辑,而不是基础的数据库操作。...
MyBatis Plus是一个基于MyBatis框架的扩展工具,它旨在简化常见的MyBatis操作,如插入、更新、删除和查询。这套学习资料包含了MyBatis Plus的源码和笔记,是深入理解并掌握该框架的宝贵资源。下面将详细阐述MyBatis ...
mybatis-plus-join是mybatis plus的一个多表插件,只要会用mp就会用这个插件,仅仅依赖了lombok,而且是扩展mp的构造器并非更改原本的构造器,不会对原有项目产生一点点影响 mybatis-plus的多表插件完全按照mybats ...
Mybatis Plus是一个强大的Mybatis扩展框架,它为开发者提供了更多的便捷功能,简化了在使用Mybatis时的一些繁琐操作。在v3.5.5版本中,这个增强工具包继续优化了性能并添加了一些新的特性。 首先,Mybatis Plus的...
MyBatis Plus(简称MP)是MyBatis的扩展插件,它简化了对数据库的基本操作,如增删改查、条件构造等。这个压缩包文件"mybatisplus-spring-boot"显然包含了MyBatis Plus在Spring Boot环境下的示例项目,方便开发者...
MyBatis Plus(简称MP)是MyBatis的扩展插件,它简化了对数据库的基本操作,如:增删改查、条件构造等。在2.92版本中,这个框架依然保持着轻量级和易用性的特点,为开发者提供了更高效的数据处理体验。 MyBatis ...
2. **MyBatis-Plus插件**:MyBatis-Plus是MyBatis的扩展,除了包含分页功能外,还有其他便捷的操作,如:条件构造器、填充实体、删除、更新等。 - **简单易用**:MyBatis-Plus提供了简单的API,使得开发者能快速...
Mybatis-Plus在Mybatis的基础上提供了一套扩展机制,它通过插件的形式实现了各种功能的增强,比如分页插件、SQL注入等。这些插件可以在启动加载XML配置时注入,对单表SQL操作提供支持。Mybatis-Plus尽可能地不改变...
Mybatis-Plus是Mybatis的一个扩展,它在Mybatis的基础上做了许多增强功能,例如自动化 CRUD 操作、提供分页插件、通用Mapper、通用Service等。"mybatis-plus-2.1.5.zip"包含的是Mybatis-Plus的源码或者二进制包,...
在IntelliJ IDEA这个强大的Java开发环境中,MyBatis Plus插件的使用可以进一步优化开发体验。 MyBatis Plus的核心功能包括: 1. **自动化CRUD操作**:MyBatis Plus提供了丰富的API,能够自动根据实体类生成对应的...
在安装了Mybatis Plus插件后,开发者可以更便捷地在Intelij IDEA中进行MyBatis相关的开发工作,享受更加高效和流畅的编程体验。虽然插件是离线的,但依然能够提供与在线版本相同的丰富功能,帮助开发者提升开发效率...
Mybatis Plus 是 Mybatis 的一个扩展工具,它在 Mybatis 的基础上提供了许多便捷的功能,包括自动 CRUD 操作、条件构造器、批量操作等。在实际的项目开发中,批量插入和批量更新是常见的数据处理场景,尤其是在处理...
Mybatis Plus(简称MP)是Mybatis的扩展插件,旨在简化Mybatis的常规操作,提供了CRUD(创建、读取、更新、删除)以及批量操作等便捷功能。尚硅谷的Mybatis Plus笔记和源码资源,对于学习和理解这个框架的内部实现...
MyBatis-Plus是一个强大的扩展库,它是MyBatis的小伙伴,主要为简化MyBatis的常规操作而设计。在了解MyBatis-Plus之前,我们先要理解MyBatis,它是一个优秀的持久层框架,提供了灵活的SQL映射和Java对象之间的映射,...
根据压缩包子文件的文件名称"mybatis_plus",我们可以推测这可能是指Mybatis Plus,这是一个Mybatis的扩展插件,它在Mybatis的基础上提供了一些额外的功能,如一键生成 CRUD 操作、支持主键自增、支持批量插入、支持...
1. **无侵入性**:Mybatis-Plus作为MyBatis的一个扩展包,不会对现有的MyBatis架构造成任何影响,同时支持MyBatis的所有特性。 2. **依赖简单**:仅依赖MyBatis和MyBatis-Spring两个库,减少了项目中的依赖复杂度。 ...
MyBatis-Plus是MyBatis的扩展框架,它提供了许多高级特性,使得在实际开发中操作数据库变得更加简便。此源码包`mybatis-plus-3.5.1.zip`包含了MyBatis-Plus 3.5.1版本的全部源代码,有助于我们深入理解其内部实现...