Java MyBatis-Plus 查询课程:根据教练 ID、日期和时间筛选
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'));
}
代码解析:
queryCourseByCoachId方法:- 该方法接收三个参数:教练 ID、日期和时间。
- 使用
courseInfoMapper.selectJoinList方法进行关联查询,获取课程信息和更新时间信息。 - 使用
MPJLambdaWrapper对象构建查询条件,并使用 Lambda 表达式进行条件设置。 - 使用
eq方法设置教练 ID 和日期的条件。 - 使用
ne方法排除已取消的课程(TrainingStatus为 3)。 - 使用
ge方法设置开始预约时间大于等于指定时间的条件。 - 使用
parseTime方法将Date类型的时间转换为LocalTime类型,并将其传递给ge方法。
parseTime方法:- 该方法将字符串类型的時間转换为
LocalTime类型。 - 使用
DateTimeFormatter.ofPattern指定时间格式为 'HH:mm:ss'。
- 该方法将字符串类型的時間转换为
注意事项:
- 请根据实际情况调整时间格式和时间解析方法。
- 确保
UpdateTime实体类中的getStartReservationTime方法返回的是字符串类型的時間。
总结:
本示例展示了如何使用 MyBatis-Plus 和 Java 8 的 Function 接口进行时间类型转换,并构建复杂的查询条件。通过这种方式,您可以方便地根据教练 ID、日期和时间筛选课程信息。
原文地址: https://www.cveoy.top/t/topic/ps7X 著作权归作者所有。请勿转载和采集!