mybatisPlus拼接了两个limit

原文链接:mybatisPlus拼接了两个limit – 编程屋

 昨天产品上线的时候,页面列表刷新突然出了服务器异常,打开日志查看出现了如下错误:

### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0,10' at line 5
### The error may exist in com/skip/service/lesson/dao/LessonTeacherMappper.java (best guess)
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: SELECT  id,teacher_name,suitable_object,copyright_ownership,introduce,class_num,size,create_time,update_time,delete_flag  FROM lesson_teacher_plan   WHERE  delete_flag=0     ORDER BY create_time DESC LIMIT ?  LIMIT ?,?
### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0,10' at line 5
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0,10' at line 5
	at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:235)

而自己的方法代码如下:

    @Override
    public PageInfo<LessonTeacherResult> getLessonTeacherList(LessonTeacherDto dto) {
        List<LessonTeacherResult> lessonTeacherResultList = new ArrayList<>();
        LambdaQueryWrapper<LessonTeacherPlan> queryWrapper = new LambdaQueryWrapper<>();
        if (dto.getSuitableObject() != null && dto.getSuitableObject() >= 0){
            queryWrapper.eq(LessonTeacherPlan::getSuitableObject,dto.getSuitableObject());
        }
        queryWrapper.orderByDesc(LessonTeacherPlan::getCreateTime);

        Page<LessonTeacherPlan> page = new Page<>(dto.getPageNum(), dto.getPageSize());
        Page<LessonTeacherPlan> lessonTeacherPlanPage = baseMapper.selectPage(page, queryWrapper);
        lessonTeacherPlanPage.getRecords().forEach(lessonTeacher -> {
            LessonTeacherResult lessonTeacherResult = new LessonTeacherResult();
            lessonTeacherResult.setId(lessonTeacher.getId());
            lessonTeacherResult.setTeacherName(lessonTeacher.getTeacherName());
            lessonTeacherResult.setSuitableObject(lessonTeacher.getSuitableObject());
            lessonTeacherResult.setClassNum(lessonTeacher.getClassNum());
            lessonTeacherResult.setCopyrightOwnership(lessonTeacher.getCopyrightOwnership());
            lessonTeacherResult.setClassNum(lessonTeacher.getClassNum());
            lessonTeacherResult.setIntroduce(lessonTeacher.getIntroduce());
            lessonTeacherResult.setCreateTime(lessonTeacher.getCreateTime());
            lessonTeacherResult.setUpdateTime(lessonTeacher.getUpdateTime());
            if (lessonTeacher.getSize() != null ) {
          lessonTeacherResult.setSize(CompareUtil.formatFileSize(Math.round(Math.random()*lessonTeacher.getSize())));
                lessonTeacherResult.setSize(lessonTeacher.getSize());
            }
            lessonTeacherResultList.add(lessonTeacherResult);
        });

        List<LessonTeacherResult> collect = lessonTeacherResultList.stream()
                .sorted(Comparator.comparing(LessonTeacherResult::getCreateTime).reversed()).collect(Collectors.toList());

        PageInfo<LessonTeacherResult> pageInfo = new PageInfo<>();
        pageInfo.setPages((int)lessonTeacherPlanPage.getPages());
        pageInfo.setPageNum((int)lessonTeacherPlanPage.getCurrent());
        pageInfo.setPageSize((int)lessonTeacherPlanPage.getSize());
        pageInfo.setTotal(lessonTeacherPlanPage.getTotal());
        pageInfo.setList(collect);
        return pageInfo;
    }

以上只是部分内容,为了维护方便,本文已迁移到新地址:mybatisPlus拼接了两个limit – 编程屋

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MybatisPlus提供了多种方式拼接SQL语句,以下是一些常用的拼接方式: 1. 使用Wrapper对象拼接条件 Wrapper是MybatisPlus提供的一个用于拼接查询条件的类,可以通过它来构建查询条件。例如: ```java QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq("name", "张三").eq("age", 18); List<User> userList = userMapper.selectList(wrapper); ``` 上面的代码使用QueryWrapper对象拼接两个查询条件,即name等于"张三"并且age等于18。最终执行selectList方法进行查询。 2. 使用Lambda表达式拼接条件 MybatisPlus还提供了一种使用Lambda表达式来拼接查询条件的方式。例如: ```java LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>(); lambdaWrapper.eq(User::getName, "张三").eq(User::getAge, 18); List<User> userList = userMapper.selectList(lambdaWrapper); ``` 上面的代码使用LambdaQueryWrapper对象拼接两个查询条件,即name等于"张三"并且age等于18。需要注意的是,Lambda表达式需要使用Java8及以上版本才支持。 3. 使用@SqlParser注解拼接SQL语句 如果需要拼接的SQL语句比较复杂,可以使用@SqlParser注解来手动编写SQL语句。例如: ```java @SqlParser("select * from user where name = #{name} and age = #{age}") List<User> selectUserList(@Param("name") String name, @Param("age") int age); ``` 上面的代码使用@SqlParser注解手动编写了一个查询语句,其中name和age是动态参数。 以上是MybatisPlus常用的拼接方式,可以根据具体需求选择不同的拼接方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值