当前位置: 首页 > wzjs >正文

网站开发 技术优势网站建设设计780元全包

网站开发 技术优势,网站建设设计780元全包,网络服务租赁合同范本,在线表白网页以下是 com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析: 1. 类的作用 MybatisMapperProxy 是 MyBatis-Plus 框架中用于实现 Mapper 接口动态代理的核心类。它继承自 MyBatis 的 MapperProxy,并扩展了以下功能: …

以下是 com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析:
在这里插入图片描述


1. 类的作用

MybatisMapperProxy 是 MyBatis-Plus 框架中用于实现 Mapper 接口动态代理的核心类。它继承自 MyBatis 的 MapperProxy,并扩展了以下功能:

  • 增强 MyBatis 原生功能:如自动填充、逻辑删除、分页查询等。
  • 拦截 Mapper 方法调用:在方法执行前后插入自定义逻辑(如 SQL 优化、参数校验)。
  • 动态 SQL 构建:支持自动生成基础 CRUD 的 SQL 语句(如 selectByIdinsert)。

2. 核心功能与实现

(1) 动态代理机制
  • 继承关系MybatisMapperProxy 继承自 MyBatis 的 MapperProxy,并重写了 invoke 方法。
  • 代理对象生成:当调用 Mapper 接口时,MyBatis-Plus 会通过 MapperProxyFactory 创建 MybatisMapperProxy 的实例作为代理对象。
  • 方法拦截:在 invoke 方法中,拦截 Mapper 接口的调用,执行增强逻辑后再调用原始 SQL。
(2) 关键方法
  • invoke 方法

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 1. 判断是否为 Object 的默认方法(如 toString),直接调用// 2. 判断是否为 MyBatis-Plus 增强方法(如 selectList Wrapper)// 3. 执行拦截器(Interceptor)链(如自动填充、逻辑删除)// 4. 调用原始 MapperProxy 的 invoke 方法执行 SQLreturn super.invoke(proxy, method, args);
    }
    
    • 增强逻辑:在调用原始 SQL 之前,会执行 MyBatis-Plus 的拦截器链(Interceptor),例如:
      • 自动填充:通过 MetaObjectHandler 自动填充字段(如创建时间、更新时间)。
      • 逻辑删除:通过 IS_DELETED 字段过滤已删除数据。
      • 分页插件:动态拼接分页 SQL。
(3) 与 MyBatis-Plus 核心组件的关联
  • SqlSessionFactory:通过工厂生成 SQL 会话。
  • Interceptor:拦截器链(如分页插件、逻辑删除插件)在此处被调用。
  • MapperRegistry:注册 Mapper 接口,管理代理对象的创建。

3. 典型使用场景

(1) 基础 CRUD 自动化
  • 当调用 BaseMapper 的方法(如 selectByIdinsert)时,MybatisMapperProxy 会自动生成对应的 SQL 语句。
  • 示例
    User user = userMapper.selectById(1L); // 自动生成 SELECT * FROM user WHERE id = 1
    
(2) 拦截器扩展
  • 通过自定义 Interceptor 实现扩展逻辑:
    public class MyInterceptor implements Interceptor {@Overridepublic Object intercept(Invocation invocation) throws Throwable {// 拦截 SQL 执行前的逻辑(如日志、权限校验)return invocation.proceed(); // 继续执行后续逻辑}
    }
    
(3) 逻辑删除
  • 当查询时,自动添加 IS_DELETED = 0 条件:
    List<User> users = userMapper.selectList(null); // 自动过滤已删除数据
    

4. 常见问题排查

(1) SQL 未生效
  • 检查是否配置了 @TableName 注解或表名映射。
  • 确保 BaseMapper 被正确继承。
(2) 拦截器未生效
  • 检查拦截器是否被正确注册到 MyBatis-Plus 配置中:
    @Configuration
    public class MyBatisPlusConfig {@Beanpublic MybatisInterceptor mybatisPlusInterceptor() {MybatisInterceptor interceptor = new MybatisInterceptor();interceptor.addInterceptors(new MyInterceptor());return interceptor;}
    }
    

5. 源码关键路径

  1. 代理工厂MapperProxyFactory 创建 MybatisMapperProxy
  2. 拦截器链InterceptorChain 调用所有注册的拦截器。
  3. SQL 执行:最终通过 SqlSession 执行 SQL。

6. 总结

MybatisMapperProxy 是 MyBatis-Plus 的核心代理类,通过动态代理和拦截器机制实现了功能增强。开发者可通过自定义拦截器或配置扩展其行为,例如实现权限校验、日志记录或 SQL 优化。


文章转载自:

http://CYI0owGs.fthcn.cn
http://7y3A67FT.fthcn.cn
http://Ag00LWt7.fthcn.cn
http://cSgyspUF.fthcn.cn
http://g3sR6cWk.fthcn.cn
http://9utScmcU.fthcn.cn
http://S39h43C9.fthcn.cn
http://6fdTLy83.fthcn.cn
http://BeNtkWbG.fthcn.cn
http://Tya9vkmd.fthcn.cn
http://14u2ksIj.fthcn.cn
http://br1HjFDb.fthcn.cn
http://qap85Exk.fthcn.cn
http://EVFHA6Vv.fthcn.cn
http://GvtBwCyW.fthcn.cn
http://sWb30Kzu.fthcn.cn
http://gwRNcAqB.fthcn.cn
http://0VIgLaT6.fthcn.cn
http://jYNXXPNs.fthcn.cn
http://R3wszL1F.fthcn.cn
http://ZRKGYOzl.fthcn.cn
http://udkCakGX.fthcn.cn
http://VBrp5IED.fthcn.cn
http://WaskMB4z.fthcn.cn
http://v5aBdU4l.fthcn.cn
http://FnphBDqT.fthcn.cn
http://iNoaoAxB.fthcn.cn
http://vHMqIEVr.fthcn.cn
http://ysrvDlxE.fthcn.cn
http://BBXblCHd.fthcn.cn
http://www.dtcms.com/wzjs/690741.html

相关文章:

  • 第三方做的网站不给源代码成都旅游视频
  • 网站开发代码用什么软件黄山网站建设推广
  • 网站拨测人员是干嘛的长沙做网站建设
  • 九江县建设规划局网站唐山做网站汉狮网络
  • 济南商城网站开发网站推广专家十年乐云seo
  • 公司网站域名价格洮南住建局网站
  • 芜湖市建设路小学网站朗读者外国人做的汉字网站
  • 怎么做查成绩网站3d建模可以自学吗
  • 展示网站建设价格网站搜索不出来
  • c2c网站都有哪些wordpress增加关键词标签
  • jsp ajax网站开发典型实例 pdf网页设计兼职
  • 微信微网站平台thinkphp5 wordpress
  • 卡尺 东莞网站建设制作网页的软件s开头
  • 6网页设计的网站哪个免费建站好
  • 网站敏感目录漏洞修复在线小游戏
  • 建设网站以后如何自建网站入口
  • 生成拼贴的网站可以做兼职的网站推荐
  • php网站开发薪资 深圳平价建网站格
  • 网站安装模板网站性能需求
  • 网站开发 需求如何做好分销系统开发
  • 重庆网站建设重庆软件开发流程包括哪些
  • 网站背景居中怎么做大连网建会
  • 腊肉网站的建设前景南通网站制作怎样
  • 国外专名做路演的网站简历生成网站
  • iis网站服务器安全隐患网络应用服务管理
  • 网址导航建站深圳市造价信息网官网入口
  • 网站关键词长度wordpress相关的网站
  • 做音乐网站是不是侵权网站空间免费试用
  • 网站做直播需要资质吗wordpress媒体文档
  • 企业网站如何建设和推广合肥网站设计建