Java MyBatis-Plus 查询课程:根据教练 ID、日期和时间筛选

本示例演示了如何使用 MyBatis-Plus 的 Lambda 表达式查询功能,结合 Java 8 的 Function 接口,根据教练 ID、日期和时间筛选课程信息,并解决时间类型转换问题。

代码示例:

public List<CourseDto> queryCourseByCoachId(long coachId, Date date, Date time) {
    List<CourseDto> courseDtoList = courseInfoMapper.selectJoinList(CourseDto.class,
            new MPJLambdaWrapper<CourseInfo>()
                    .selectAll(CourseInfo.class)
                    .selectAll(UpdateTime.class)
                    .innerJoin(UpdateTime.class, UpdateTime::getUpdateTimeId, CourseInfo::getUpdateTimeId)
                    .eq(UpdateTime::getCoachId, coachId)
                    .ne(CourseInfo::getTrainingStatus, 3) // 排除已取消的课程
                    .eq(UpdateTime::getCourseDate, date) // 日期相同
                    .ge(UpdateTime::getStartReservationTime, parseTime(time.toString()))
    );
    return courseDtoList;
}

public static LocalTime parseTime(String time) {
    return LocalTime.parse(time, DateTimeFormatter.ofPattern('HH:mm:ss'));
}

代码解析:

  1. queryCourseByCoachId 方法:
    • 该方法接收三个参数:教练 ID、日期和时间。
    • 使用 courseInfoMapper.selectJoinList 方法进行关联查询,获取课程信息和更新时间信息。
    • 使用 MPJLambdaWrapper 对象构建查询条件,并使用 Lambda 表达式进行条件设置。
    • 使用 eq 方法设置教练 ID 和日期的条件。
    • 使用 ne 方法排除已取消的课程(TrainingStatus 为 3)。
    • 使用 ge 方法设置开始预约时间大于等于指定时间的条件。
    • 使用 parseTime 方法将 Date 类型的时间转换为 LocalTime 类型,并将其传递给 ge 方法。
  2. parseTime 方法:
    • 该方法将字符串类型的時間转换为 LocalTime 类型。
    • 使用 DateTimeFormatter.ofPattern 指定时间格式为 'HH:mm:ss'。

注意事项:

  • 请根据实际情况调整时间格式和时间解析方法。
  • 确保 UpdateTime 实体类中的 getStartReservationTime 方法返回的是字符串类型的時間。

总结:

本示例展示了如何使用 MyBatis-Plus 和 Java 8 的 Function 接口进行时间类型转换,并构建复杂的查询条件。通过这种方式,您可以方便地根据教练 ID、日期和时间筛选课程信息。

Java MyBatis-Plus 查询课程:根据教练 ID、日期和时间筛选

原文地址: https://www.cveoy.top/t/topic/ps7X 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录