mybatis在xml中使用OGNL取值简述

概述

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

比如下面这段OGNL表达式

java 复制代码
<if test="null != params.applyTimeStart">
    and mpa.apply_time >= #{params.applyTimeStart}
</if>

<if test="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

相关推荐
雨中飘荡的记忆2 小时前
MyBatis参数处理模块详解
java·mybatis
weixin_425023003 小时前
多内网服务器公网中转通信方案(Spring Boot 2.7 + MyBatis Plus)
服务器·spring boot·mybatis
Light604 小时前
MyBatis-Plus 全解:从高效 CRUD 到云原生数据层架构的艺术
spring boot·云原生·架构·mybatis·orm·代码生成·数据持久层
七夜zippoe4 小时前
MyBatis插件开发-实现SQL执行耗时监控
java·sql·mybatis·springboot·责任链
黄昏恋慕黎明4 小时前
快速上手mybatis(一)
java·数据库·mybatis
草莓熊Lotso4 小时前
Qt 入门核心指南:从框架认知到环境搭建 + Qt Creator 实战
xml·开发语言·网络·c++·人工智能·qt·页面
小夏卷编程4 小时前
Mybaits 使用过程中mapper.xml foreach List<String[]>的时候报错
xml
爱丽_4 小时前
MyBatis关联映射与注解开发详解
数据库·mybatis
侠客行031714 小时前
Mybatis二级缓存实现详解
java·mybatis·源码阅读