`
eric_weitm
  • 浏览: 243088 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mybatis plus的插件扩展

 
阅读更多

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 3.2.1破解版

    MyBatis Plus(简称iMybatis)是一款基于MyBatis框架的扩展插件,它旨在简化MyBatis的常规操作,提供更为便捷的 CRUD(创建、读取、更新、删除)功能,以及丰富的条件构造器,让数据库操作更加简单。在3.2.1这个版本...

    mybatis_plus插件2.7版本破解

    MyBatis Plus是一款基于MyBatis框架的扩展工具,它为开发者提供了更便捷的数据操作功能,简化了在MyBatis中的基本 CRUD(创建、读取、更新、删除)操作。在2.7版本中,MyBatis Plus进一步优化了性能,并增加了一些新...

    mybatis-plus IDEA常用插件

    使用IDEA的MyBatis-Plus插件,可以显著提升开发效率,减少手动编写SQL和基础业务代码的时间,同时也能降低出错概率,提高代码质量。 总结来说,MyBatis-Plus作为MyBatis的扩展,提供了一系列强大的数据库操作功能...

    idea2018.1版本mybatis plus插件

    总的来说,MyBatis Plus插件是针对IntelliJ IDEA的增强工具,它优化了在MyBatis Plus环境下的开发体验,尤其是对Mapper接口和XML映射文件的管理,使得开发人员能更专注于业务逻辑,而不是基础的数据库操作。...

    MyBatis Plus全套学习资料(带源码和笔记)

    MyBatis Plus是一个基于MyBatis框架的扩展工具,它旨在简化常见的MyBatis操作,如插入、更新、删除和查询。这套学习资料包含了MyBatis Plus的源码和笔记,是深入理解并掌握该框架的宝贵资源。下面将详细阐述MyBatis ...

    mybatis-plus-join是mybatis plus的一个多表插件

    mybatis-plus-join是mybatis plus的一个多表插件,只要会用mp就会用这个插件,仅仅依赖了lombok,而且是扩展mp的构造器并非更改原本的构造器,不会对原有项目产生一点点影响 mybatis-plus的多表插件完全按照mybats ...

    Mybatis plus增强工具包 v3.5.5.zip

    Mybatis Plus是一个强大的Mybatis扩展框架,它为开发者提供了更多的便捷功能,简化了在使用Mybatis时的一些繁琐操作。在v3.5.5版本中,这个增强工具包继续优化了性能并添加了一些新的特性。 首先,Mybatis Plus的...

    mybatis plus操作

    MyBatis Plus(简称MP)是MyBatis的扩展插件,它简化了对数据库的基本操作,如增删改查、条件构造等。这个压缩包文件"mybatisplus-spring-boot"显然包含了MyBatis Plus在Spring Boot环境下的示例项目,方便开发者...

    mybatis_plus 2.92

    MyBatis Plus(简称MP)是MyBatis的扩展插件,它简化了对数据库的基本操作,如:增删改查、条件构造等。在2.92版本中,这个框架依然保持着轻量级和易用性的特点,为开发者提供了更高效的数据处理体验。 MyBatis ...

    mybatis分页插件代码

    2. **MyBatis-Plus插件**:MyBatis-Plus是MyBatis的扩展,除了包含分页功能外,还有其他便捷的操作,如:条件构造器、填充实体、删除、更新等。 - **简单易用**:MyBatis-Plus提供了简单的API,使得开发者能快速...

    mybatis-plus 实践及架构原理

    Mybatis-Plus在Mybatis的基础上提供了一套扩展机制,它通过插件的形式实现了各种功能的增强,比如分页插件、SQL注入等。这些插件可以在启动加载XML配置时注入,对单表SQL操作提供支持。Mybatis-Plus尽可能地不改变...

    MybatisX idea 快速开发插件jar

    Mybatis-Plus是Mybatis的一个扩展,它在Mybatis的基础上做了许多增强功能,例如自动化 CRUD 操作、提供分页插件、通用Mapper、通用Service等。"mybatis-plus-2.1.5.zip"包含的是Mybatis-Plus的源码或者二进制包,...

    mybatis plus 2.86

    在IntelliJ IDEA这个强大的Java开发环境中,MyBatis Plus插件的使用可以进一步优化开发体验。 MyBatis Plus的核心功能包括: 1. **自动化CRUD操作**:MyBatis Plus提供了丰富的API,能够自动根据实体类生成对应的...

    mybatis离线插件包

    在安装了Mybatis Plus插件后,开发者可以更便捷地在Intelij IDEA中进行MyBatis相关的开发工作,享受更加高效和流畅的编程体验。虽然插件是离线的,但依然能够提供与在线版本相同的丰富功能,帮助开发者提升开发效率...

    Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)

    Mybatis Plus 是 Mybatis 的一个扩展工具,它在 Mybatis 的基础上提供了许多便捷的功能,包括自动 CRUD 操作、条件构造器、批量操作等。在实际的项目开发中,批量插入和批量更新是常见的数据处理场景,尤其是在处理...

    尚硅谷Mybatis Plus笔记+源码

    Mybatis Plus(简称MP)是Mybatis的扩展插件,旨在简化Mybatis的常规操作,提供了CRUD(创建、读取、更新、删除)以及批量操作等便捷功能。尚硅谷的Mybatis Plus笔记和源码资源,对于学习和理解这个框架的内部实现...

    mybatis.plus官方中文文档

    MyBatis-Plus是一个强大的扩展库,它是MyBatis的小伙伴,主要为简化MyBatis的常规操作而设计。在了解MyBatis-Plus之前,我们先要理解MyBatis,它是一个优秀的持久层框架,提供了灵活的SQL映射和Java对象之间的映射,...

    idea插件(mybatis插件)

    根据压缩包子文件的文件名称"mybatis_plus",我们可以推测这可能是指Mybatis Plus,这是一个Mybatis的扩展插件,它在Mybatis的基础上提供了一些额外的功能,如一键生成 CRUD 操作、支持主键自增、支持批量插入、支持...

    mybatis-plus优缺点

    1. **无侵入性**:Mybatis-Plus作为MyBatis的一个扩展包,不会对现有的MyBatis架构造成任何影响,同时支持MyBatis的所有特性。 2. **依赖简单**:仅依赖MyBatis和MyBatis-Spring两个库,减少了项目中的依赖复杂度。 ...

    mybatis-plus源码(mybatis-plus-3.5.1.zip)

    MyBatis-Plus是MyBatis的扩展框架,它提供了许多高级特性,使得在实际开发中操作数据库变得更加简便。此源码包`mybatis-plus-3.5.1.zip`包含了MyBatis-Plus 3.5.1版本的全部源代码,有助于我们深入理解其内部实现...

Global site tag (gtag.js) - Google Analytics