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

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;
	}
}


http://www.kler.cn/news/340330.html

相关文章:

  • 先进封装技术 Part03---重布线层(RDL)的科普
  • StoryMaker: Towards Holistic Consistent Characters in Text-to-image Generation
  • MySQL基本操作(1)
  • 线稿如何快速上色?AI自动线稿上色教程分享
  • expressjs的 post 请求方法,从 body 中取参数
  • quic-go实现屏幕广播程序
  • JVM(学习预热 - 走进Java)(持续更新迭代)
  • 【OpenGauss源码学习 —— (VecAgg)】
  • 昇思学习打卡营学习记录:ResNet50中药炮制饮片质量判断
  • CTFshow 命令执行 web37-web40
  • 深度融合 AR 与 AI 、从 Web2 到 Web3,V3X 定义下一代智能眼镜
  • Java | Leetcode Java题解之第456题132模式
  • 程序bug修复的艺术与科学
  • 【开源项目推荐】开源ERP系统:探索企业管理的无限可能
  • C++语言学习(1): std::endl 在做什么?
  • [论文阅读] DVQA: Understanding Data Visualizations via Question Answering
  • Java数据类型常量
  • 【光追模组】雷神之锤4光追mod,调色并修改光影,并且支持光追效果,游戏画质大提升
  • nginx从入门到精通
  • 系统架构师备考记忆不太清楚的点-信息系统-需求分析