studentLambdaQueryWrapper.isNotNull(Student::getDormitoryId);请详细解释
时间: 2024-03-07 17:50:55 浏览: 52
这是一个使用 Lambda 表达式构建查询条件的代码片段,同样使用了 MyBatis-Plus 框架中的 LambdaQueryWrapper 类。该代码片段的作用是构建一个查询条件,查询 Student 表中 dormitory_id 属性不为 null 的记录。
LambdaQueryWrapper 的 isNotNull 方法用于添加不为 null 的查询条件,其参数为一个 Lambda 表达式,指定了要查询的实体类属性。
具体来说,Student::getDormitoryId 表示查询 Student 实体类中的 dormitory_id 属性。因此,该代码片段的含义是查询 Student 表中 dormitory_id 属性不为 null 的记录。
需要注意的是,该代码片段中的 Student 类需要有对应的属性和 getter 方法。同时,该代码片段中的 Lambda 表达式中的属性名需要和数据库表中的字段名保持一致。
相关问题
Student student = studentService.getById(id); LambdaQueryWrapper<Student> studentLambdaQueryWrapper = new LambdaQueryWrapper<>(); studentLambdaQueryWrapper.eq(Student::getSex,student.getSex()); //班级的学生 if (!ObjectUtils.isEmpty(student.getGrade())) { studentLambdaQueryWrapper.eq(Student::getGrade,student.getGrade()); } //并且存在宿舍的 studentLambdaQueryWrapper.isNotNull(Student::getDormitoryId); List<Student> studentList = studentService.list(studentLambdaQueryWrapper); //查出自己的文件答案 LambdaQueryWrapper<TopicResult> topicResultLambdaQueryWrapper = new LambdaQueryWrapper<>(); topicResultLambdaQueryWrapper.eq(TopicResult::getStuNum, student.getStudentNumber()) .and(qw -> qw.eq(TopicResult::getTopicId, 1).or().eq(TopicResult::getTopicId, 2)); List<TopicResult> topicResults = topicResultService.list(topicResultLambdaQueryWrapper);请详细解释每一行
这段代码主要是对学生信息和题目结果进行查询和筛选。下面是每一行代码的解释:
1. `Student student = studentService.getById(id);` 通过id获取一名学生的信息。
2. `LambdaQueryWrapper<Student> studentLambdaQueryWrapper = new LambdaQueryWrapper<>();` 创建一个LambdaQueryWrapper对象,用于构建Lambda查询表达式。
3. `studentLambdaQueryWrapper.eq(Student::getSex,student.getSex());` 查询性别与该名学生相同的所有学生。
4. `if (!ObjectUtils.isEmpty(student.getGrade()))` 检查该名学生是否有班级信息。
5. `studentLambdaQueryWrapper.eq(Student::getGrade,student.getGrade());` 如果该名学生有班级信息,则查询同班级的所有学生。
6. `studentLambdaQueryWrapper.isNotNull(Student::getDormitoryId);` 查询所有已经分配到宿舍的学生。
7. `List<Student> studentList = studentService.list(studentLambdaQueryWrapper);` 执行查询操作,并将结果存储在List中。
8. `LambdaQueryWrapper<TopicResult> topicResultLambdaQueryWrapper = new LambdaQueryWrapper<>();` 创建一个LambdaQueryWrapper对象,用于构建Lambda查询表达式。
9. `topicResultLambdaQueryWrapper.eq(TopicResult::getStuNum, student.getStudentNumber())` 查询该名学生的题目结果。
10. `.and(qw -> qw.eq(TopicResult::getTopicId, 1).or().eq(TopicResult::getTopicId, 2));` 并且查询题目id为1或2的结果。
11. `List<TopicResult> topicResults = topicResultService.list(topicResultLambdaQueryWrapper);` 执行查询操作,并将结果存储在List中。
@RequestMapping("/delete") //删除数据 public String delete(Integer id) { dormitoryService.removeById(id); LambdaUpdateWrapper<Student> studentLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); studentLambdaUpdateWrapper.eq(Student::getDormitoryId,id) .set(Student::getDormitoryId,null); studentService.update(studentLambdaUpdateWrapper); return "redirect:list"; }请详细解释每一行代码
1. `@RequestMapping("/delete")`: 这是一个 Spring MVC 的注解,用于映射 URL 到该方法。
2. `public String delete(Integer id)`: 这是一个公共方法,它接收一个 Integer 类型的 id 参数,表示要删除的数据的 ID。
3. `dormitoryService.removeById(id)`: 这一行代码调用 dormitoryService 对象的 removeById 方法,该方法会根据传入的 id 删除对应的数据。
4. `LambdaUpdateWrapper<Student> studentLambdaUpdateWrapper = new LambdaUpdateWrapper<>();`: 这一行代码创建了一个 LambdaUpdateWrapper 对象,用于更新 Student 表中的数据。
5. `studentLambdaUpdateWrapper.eq(Student::getDormitoryId, id)`: 这一行代码设置更新条件,eq 表示相等,Student::getDormitoryId 表示要更新的字段是 Student 表的 dormitory_id 字段,id 表示要更新的值是传入的 id 参数。
6. `.set(Student::getDormitoryId, null)`: 这一行代码设置要更新的值为 null,表示将 Student 表中 dormitory_id 字段的值设为 null。
7. `studentService.update(studentLambdaUpdateWrapper)`: 这一行代码调用 studentService 对象的 update 方法,该方法会根据 LambdaUpdateWrapper 对象更新 Student 表中的数据。
8. `return "redirect:list";`: 这一行代码返回一个字符串 "redirect:list",表示重定向到 list 页面。
阅读全文