# springboot-mybatis-plus **Repository Path**: free_pan/springboot-mybatis-plus ## Basic Information - **Project Name**: springboot-mybatis-plus - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-26 - **Last Updated**: 2026-01-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 技术选型 ### 问题解决方案 #### 执行外部SQL - mybatis 的 注解 `@Select('${SQL}')` 即可 #### 同一个指标在不同情况(如:不同层,不同角色), 执行的SQL不一样 - 使用的表不一样: 用 mybatis 的 OGNL 表达式 ``, 完全可以针对不同条件写不同的SQL语句 #### 在SQL执行之前, 加载一些前置条件参数 如: 需要使用外部表数据, 缩小查询的数据范围(如:排除某些数据,但又存在跨数据库,导致无法直接进行表连接连接的情况): 使用表达式引擎, 在执行SQL之前, 先加载好动态过滤条件 ### 表达式引擎 可选项: * aviator: 轻量, 性能最强(执行1万次简单表达式,在我的机器,几乎都在10毫秒内), 支持自定义函数, 数值计算精度问题的解决方案最友好 * commons-jexl3: 轻量, 性能较 aviator 略差(几乎持平), 支持自定义函数, 数值计算精度问题的解决方案不如 aviator 友好 * nashorn-core: 重量级选手, 一个支持es5.1的js执行引擎, 功能极强, 但简单表达式执行1万次, 在我机器上基本都在 1200 毫秒左右, 简单表达式执行效率3者最低. 但可以结合java, 在js中调用web api,编写各种逻辑 最终选择: aviator ### 持久化框架 可选项: * mybatis-plus: 功能强大, 中文资料充足, 支持 OGNL 表达式, SQL语句中可以编写较复杂逻辑 * mybatis-flex: 号称性能比 mybatis-plus 更强, 但中文资料较少 * mybatis: 上面两者的祖宗, 但功能略显不足 * spring jdbc: 功能最少, 一开始想基于该框架实现执行外部SQL 最终选择: mybatis-plus