mybatis-plus对字段operate_time时间进行比较

1、比如对operation_marks字段进行比较(操作成绩)
首先在实体类entity中新增两个字段,接收前端传过来的两个值。字段上加上@TableField(exist = false)表明不是表里的字段

    private Double operationMarks;
    /**
     * 区间比较
     */
    @TableField(exist = false)
    private Double operationMarksStart;
    /**
     * 区间比较
     */
    @TableField(exist = false)
    private Double operationMarksEnd;

AuthScoreController 子类中重写父类BaseRestControllerWithTemplate的queryWrapper()方法。因为该方法是protected修饰符修饰,所以可以被本类、本包、以及子类(不管是不是同包下,还是不同包下的子类)调用和重写。

    @Override
    protected Wrapper queryWrapper(EntityWrapper wrapper) {

        SubjectEnrollScoreList entity = wrapper.getEntity();
        Double operationMarksStart = entity.getOperationMarksStart();
        Double operationMarksEnd = entity.getOperationMarksEnd();

        if(operationMarksStart!= null){
            wrapper = (EntityWrapper) wrapper.gt("operation_marks", operationMarksStart);
        }
        if(operationMarksEnd!= null){
            wrapper = (EntityWrapper) wrapper.lt("operation_marks", operationMarksEnd);
        }

        return wrapper;

    }

当调用接口查询列表时,会调用serviceList.selectPage(page, queryWrapper(new EntityWrapper<>(model))),queryWrapper()方法会调用子类重写的方法。这里体现了多态性。

引申 :
对于多态,可以总结以下几点:
一、使用父类类型的引用指向子类的对象;
二、该引用只能调用父类中定义的方法和变量;
三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。

    /**
     * @param page 查询一般传入参数为current和size, 例如/listPage?current=1&size=5,
     * @return 返回分页数据
     */
    @RequestMapping(value = "/page", method = RequestMethod.GET)
    public ResponseObj> listPage(@ModelAttribute Page page, @ModelAttribute TL model) throws Exception {
        Page pageList = serviceList.selectPage(page, queryWrapper(new EntityWrapper<>(model)));
        for (TL eachObj : pageList.getRecords()) {
            queryFilter(eachObj);
        }
        return new ResponseObj<>(pageList, RetCode.SUCCESS);
    }

2、如果要对operation_marksthery_marks两个字段进行比较(操作成绩和理论成绩),也是同理。注意对四个值a,b,c,d判空处理。刚开始想到的是a==null,b!=null,c==null,d!=null..........如果这样的话会有十几种情况出现,所以这里使用下面代码判断。

    @Override
    protected Wrapper queryWrapper(EntityWrapper wrapper) {

//        Wrapper result = null;
        SubjectEnrollScoreList entity = wrapper.getEntity();
        Double operationMarksStart = entity.getOperationMarksStart();
        Double operationMarksEnd = entity.getOperationMarksEnd();

        Double theryMarksStart = entity.getTheryMarksStart();
        Double theryMmarksEnd = entity.getTheryMmarksEnd();

        if(operationMarksStart!= null){
            wrapper = (EntityWrapper) wrapper.gt("operation_marks", operationMarksStart);
        }
        if(operationMarksEnd!= null){
            wrapper = (EntityWrapper) wrapper.lt("operation_marks", operationMarksEnd);
        }
        if(theryMarksStart!= null){
            wrapper = (EntityWrapper) wrapper.gt("thery_marks", theryMarksStart);
        }
        if(theryMmarksEnd!= null){
            wrapper = (EntityWrapper) wrapper.lt("thery_marks", theryMmarksEnd);
        }

        return wrapper;

    }

你可能感兴趣的:(mybatis-plus对字段operate_time时间进行比较)