MybatisPlus操纵符和运算值

打印 上一主题 下一主题

主题 1826|帖子 1826|积分 5478

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
好久没有更新了,这次更新一个当前端需要对运算符和运算值都需要前端转达给后端,动态拼接运算条件时的处理处罚方法。
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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

北冰洋以北

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表