MybatisPlus中的customSqlSegment动态拼接where条件

前言

在对于一些MybatisPlus提供的Api无法实现的SQL场景,我们需要去到xml文件中写SQL语句,where条件的编写让人十分头疼,那么有没有一种便捷的方式通过MybatisPlus提供的Api快捷拼接where条件呢?有的有的,这就是今天要介绍的customSqlSegment。

编写流程

创建mapper接口

入参定义为QueryWrapper,用来接收查询条件。

调用mapper接口

构造QueryWrapper来设置查询条件,这里的test是自定义的方法用于判断条件是否成立,成立返回true,eq等条件方法才会拼接,相当于xml中的<if test = "">,test方法在下方需要可自取。

java 复制代码
public static boolean test(Object o) {
        if (o == null) {
            return false;

        }
        if (o instanceof String s) {
            return !s.isBlank();
        }
        if (o instanceof List<?> list) {
            return !list.isEmpty();
        }
        return true;
    }

编写SQL

在xml中正常编写SQL,where条件部分通过 **${接口中参数别名.customSqlSegment}**来引用条件,MybatisPlus会自动为我们拼接上where条件。

这样一来,即使需要在xml中编写SQL语句,也不用进行繁琐的拼接条件工作了,代码更加简洁,可维护性也更高了。

相关推荐
要开心吖ZSH26 分钟前
一文搞懂:JDK 21 虚拟线程 vs N种异步方案,到底该怎么选?
java·数据库·jdk·虚拟线程
guodingdingh5 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯7 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育7 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵7 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔9 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影9 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Miao1213110 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔10 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程
CRMEB系统商城11 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源