IT评测·应用市场-qidao123.com技术社区

标题: MybatisPlus操纵符和运算值 [打印本页]

作者: 北冰洋以北    时间: 2024-10-8 10:33
标题: MybatisPlus操纵符和运算值
好久没有更新了,这次更新一个当前端需要对运算符和运算值都需要前端转达给后端,动态拼接运算条件时的处理处罚方法。
1、踩雷

查询年事 >=20,此中>=前端下拉框选择,20值前端下拉框选择
1)用户表:
  1. CREATE TABLE `user` (
  2.   `id` bigint(20) NOT NULL COMMENT '主键',
  3.   `name` varchar(12)  COMMENT '用户名称',
  4.   `hobby` varchar(12) DEFAULT NULL COMMENT '爱好',
  5.   `age`  int(11) DEFAULT NULL COMMENT '用户年龄',
  6.   PRIMARY KEY (`id`) USING BTREE
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户表';
复制代码
2)定义VO:
  1. import lombok.Data;
  2. @Data
  3. public class UserVO extends User {
  4.         /**
  5.          * 操作运算符:>=/<=/=
  6.          */
  7.     private String operateStr;
  8. }
复制代码
 3)Mapper内容
  1.     <select id="selectUsers" resultType="org.springboot.xg.vo.UserVO">
  2.         select * from user
  3.         <where>
  4.             <if test="userVO.operateStr!= null and userVO.operateStr != '' and  userVO.age!= null">
  5.                 and avg_delay ${userVO.operateStr} #{userVO.age}
  6.             </if>
  7.         </where>
  8.     </select>
复制代码
这样写虽然担当参数没有标题,但是在进入Mapper层查询时出报错,不能辨认符号。
2、调解

1)定义摆列
  1. package org.springboot.xg.enums;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Getter;
  4. @Getter
  5. @AllArgsConstructor
  6. public enum OperateEnum {
  7.         // 大于等于
  8.         GREATER_THAN_OR_EQUAL_TO(1, ">="),
  9.         // 等于
  10.         BE_EQUAL_TO(2, "="),
  11.         // 小于等于
  12.         LESS_THAN_OR_EQUAL_TO(3, "<=");
  13.         /**
  14.          * 操作符对应整数值
  15.          */
  16.         private final Integer operateIntValue;
  17.         /**
  18.          * 条件
  19.          */
  20.         private final String condition;
  21.         /**
  22.          * 根据值获取条件
  23.          *
  24.          * @param value 值
  25.          * @return 条件
  26.          */
  27.         public static String getConditionByIntValue(Integer value) {
  28.                 for (OperateEnum item : OperateEnum.values()) {
  29.                         if (item.getOperateIntValue().equals(value)) {
  30.                                 return item.getCondition();
  31.                         }
  32.                 }
  33.                 return null;
  34.         }
  35. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4