MybatisPlus操作符和运算值详解

 更新时间:2024年10月09日 11:11:04   作者:Java王小怪  
在前端到后端的数据传递中,处理动态运算条件是一个常见的需求,本文介绍了如何在MybatisPlus中处理运算符和运算值的动态拼接问题,感兴趣的朋友一起看看吧

好久没有更新了,这次更新一个当前端需要对运算符和运算值都需要前端传递给后端,动态拼接运算条件时的处理方法。

1、踩雷

查询年龄 >=20,其中>=前端下拉框选择,20值前端下拉框选择

1)用户表:

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL COMMENT '主键',
  `name` varchar(12)  COMMENT '用户名称',
  `hobby` varchar(12) DEFAULT NULL COMMENT '爱好',
  `age`  int(11) DEFAULT NULL COMMENT '用户年龄',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户表';

2)定义VO:

import lombok.Data;
@Data
public class UserVO extends User {
	/**
	 * 操作运算符:>=/<=/=
	 */
    private String operateStr;
}

 3)Mapper内容

    <select id="selectUsers" resultType="org.springboot.xg.vo.UserVO">
        select * from user
        <where>
            <if test="userVO.operateStr!= null and userVO.operateStr != '' and  userVO.age!= null">
                and avg_delay ${userVO.operateStr} #{userVO.age}
            </if>
        </where>
    </select>

这样写虽然接受参数没有问题,但是在进入Mapper层查询时出报错,不能识别符号。

2、调整

1)定义枚举

package org.springboot.xg.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum OperateEnum {
	// 大于等于
	GREATER_THAN_OR_EQUAL_TO(1, ">="),
	// 等于
	BE_EQUAL_TO(2, "="),
	// 小于等于
	LESS_THAN_OR_EQUAL_TO(3, "<=");
	/**
	 * 操作符对应整数值
	 */
	private final Integer operateIntValue;
	/**
	 * 条件
	 */
	private final String condition;
	/**
	 * 根据值获取条件
	 *
	 * @param value 值
	 * @return 条件
	 */
	public static String getConditionByIntValue(Integer value) {
		for (OperateEnum item : OperateEnum.values()) {
			if (item.getOperateIntValue().equals(value)) {
				return item.getCondition();
			}
		}
		return null;
	}
}

到此这篇关于MybatisPlus操作符和运算值的文章就介绍到这了,更多相关MybatisPlus运算值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • postman测试post请求参数为json类型的实例讲解

    postman测试post请求参数为json类型的实例讲解

    下面小编就为大家分享一篇postman测试post请求参数为json类型的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • idea全局设置Maven配置的实现步骤

    idea全局设置Maven配置的实现步骤

    本文主要介绍了idea全局设置Maven配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Druid之连接创建及销毁示例详解

    Druid之连接创建及销毁示例详解

    这篇文章主要为大家介绍了Druid之连接创建及销毁示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • SpringBoot前后端交互、全局异常处理之后端异常信息抛到前端显示弹窗

    SpringBoot前后端交互、全局异常处理之后端异常信息抛到前端显示弹窗

    Spring Boot是一个用于构建独立的、基于生产级别的Spring应用程序的框架,下面这篇文章主要给大家介绍了关于SpringBoot前后端交互、全局异常处理之后端异常信息抛到前端显示弹窗的相关资料,需要的朋友可以参考下
    2024-08-08
  • java线程Thread.sleep()对比对象的wait示例解析

    java线程Thread.sleep()对比对象的wait示例解析

    这篇文章主要为大家介绍了java线程Thread.sleep()对比对象的wait示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • java基础--JDK SPI概述

    java基础--JDK SPI概述

    SPI是一种服务发现机制,本文就SPI做了详细概述,具有很好的参考价值,希望对小伙伴们有所帮助,感兴趣的朋友一起来参考参考吧
    2021-08-08
  • 如何解决Springboot Dao注入失败的问题

    如何解决Springboot Dao注入失败的问题

    这篇文章主要介绍了如何解决Spring boot Dao注入失败的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • controller函数中参数列表使用多个@RequestBody问题

    controller函数中参数列表使用多个@RequestBody问题

    这篇文章主要介绍了controller函数中参数列表使用多个@RequestBody问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java入门基础之抽象类与接口

    Java入门基础之抽象类与接口

    对于面向对象编程来说,抽象是它的一大特征之一,在 Java 中可以通过两种形式来体现OOP的抽象:接口和抽象类,下面这篇文章主要给大家介绍了关于Java入门基础之抽象类与接口的相关资料,需要的朋友可以参考下
    2022-02-02
  • SpringBoot AOP @Pointcut切入点表达式排除某些类方式

    SpringBoot AOP @Pointcut切入点表达式排除某些类方式

    这篇文章主要介绍了SpringBoot AOP @Pointcut切入点表达式排除某些类方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论