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运算值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java导出Excel文件的步骤全纪录

    java导出Excel文件的步骤全纪录

    这篇文章主要给大家介绍了关于java导出Excel文件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • java多线程中断代码详解

    java多线程中断代码详解

    这篇文章主要介绍了java多线程中断代码详解,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • java实现连接mysql数据库单元测试查询数据的实例代码

    java实现连接mysql数据库单元测试查询数据的实例代码

    下面小编就为大家带来一篇java实现连接mysql数据库单元测试查询数据的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • 浅谈Java分布式架构下如何实现分布式锁

    浅谈Java分布式架构下如何实现分布式锁

    这篇文章主要介绍了浅谈Java分布式架构下如何实现分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 区块链常用数据库leveldb用java来实现常规操作的方法

    区块链常用数据库leveldb用java来实现常规操作的方法

    这篇文章主要介绍了区块链常用数据库leveldb用java来实现常规操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • SpringMvc自动装箱及GET请求参数原理解析

    SpringMvc自动装箱及GET请求参数原理解析

    这篇文章主要介绍了SpringMvc自动装箱及GET请求参数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java8新日期时间API的20个使用示例

    Java8新日期时间API的20个使用示例

    这篇文章主要介绍了Java8新日期时间API的20个使用示例,为了学习Java 8的这个新库,这里我创建了20个以任务为导向的例子,需要的朋友可以参考下
    2015-03-03
  • Java与Python之间使用jython工具类实现数据交互

    Java与Python之间使用jython工具类实现数据交互

    今天小编就为大家分享一篇关于Java与Python之间使用jython工具类实现数据交互,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 微信、支付宝二码合一扫码支付实现思路(java)

    微信、支付宝二码合一扫码支付实现思路(java)

    这篇文章主要为大家详细介绍了微信、支付宝二码合一扫码支付实现思路,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Spring boot集中异常处理方法实例

    Spring boot集中异常处理方法实例

    这篇文章主要介绍了Spring boot集中异常处理方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论