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

mybatis在xml中使用OGNL取值简述

概述

在业务中如果dao层搭配了mybatis,那么通常会将一些业务查询写入到xml中,并且在过滤一些业务条件时会使用OGNL表达式

比如下面这段OGNL表达式

<iftest="null != params.applyTimeStart">and mpa.apply_time>=#{params.applyTimeStart}</if><iftest="null != params.applyTimeEnd">and mpa.apply_time&lt;=#{params.applyTimeEnd}</if>

可以看到在表达式中是通过xxx.xxx的方式取值的;
先说结论,通过get方法获取的值

org.apache.ibatis.reflection.Reflector#getGetInvoker

mybatis:3.5.10

源码分析

思路大致是先从外层查询进去,然后一路debug进去;

我的查询入口是个分页查询,我在中间源码setParameters处打了个断点
com.baomidou.mybatisplus.core.MybatisParameterHandler#setParameters

然后一路往下跟踪到BeanWrapper中的metaClass.getGetInvoker方法,在其中看到了查询get方法的逻辑
org.apache.ibatis.reflection.wrapper.BeanWrapper#getBeanProperty

获取get方法的逻辑
org.apache.ibatis.reflection.Reflector#getGetInvoker

http://www.rkmt.cn/news/182518.html

相关文章:

  • SSH连接Jupyter Lab进行远程开发:Miniconda环境下的最佳配置
  • 2025年诚信的杨丰肇家装设计电话推荐榜:杨丰肇家装设计基本信息与案例精选 - 工业推荐榜
  • 从Anaconda下载到PyTorch GPU运行:一站式操作手册
  • 清华镜像源配置教程:加速pip和conda双重下载
  • Conda env remove删除不再需要的Miniconda环境
  • 还在熬夜凑文献综述?7款免费AI工具一键生成+真实文献交叉引用!
  • 使用Miniconda-Python3.10镜像轻松部署PyTorch与CUDA开发环境
  • Markdown+Jupyter:用Miniconda-Python3.10生成高质量技术文档
  • Anaconda全家桶瘦身:仅保留Miniconda核心组件
  • 异步API开发:轮询与回调的实际应用
  • 解决CondaError: run ‘conda init‘ before ‘conda activate‘的根本方法
  • Zanzibar vs MySQL Permission System - 实证性能对比研究
  • 000
  • Delphi多线程编程入门:工作线程与主线程的协作
  • 如何在Linux上快速安装PyTorch并启用GPU加速(附Miniconda详细步骤)
  • Anaconda Cloud私有包管理 vs Miniconda本地部署
  • SSH远程访问Miniconda环境进行PyTorch训练的完整流程
  • PyTorch GPU检测失败?检查CUDA与Miniconda环境兼容性
  • Miniconda中安装PyTorch Lightning的最佳方式
  • Python描述符协议:揭秘属性访问的魔法背后
  • CUDA安装避坑指南:配合Miniconda-Python3.10实现PyTorch无缝对接
  • 使用Miniconda-Python3.10快速搭建深度学习环境(含PyTorch和TensorFlow)
  • 使用Miniconda打包自己的PyTorch项目依赖
  • 主治医师高效复习方略:解析听哪个老师的课可助您事半功倍 - 医考机构品牌测评专家
  • 如何在Linux上高效安装PyTorch GPU版本?详细步骤+避坑指南
  • 如何在Linux系统中用Miniconda快速部署PyTorch环境
  • Markdown生成技术文档:Miniconda环境信息一键导出
  • Miniconda deactivate退出环境后的资源释放机制
  • Miniconda安装过程中遇到Segmentation fault的可能原因
  • Conda info --envs查看Miniconda所有虚拟环境