Mybatis Plus条件构造器apply查询方式的使用

1.业务需求一:根据传进来的开始日期,查询所有该日期是数据,但是数据库中保存是时间,所以需要使用apply查询方式并格式化。

    相关代码如下:

LambdaQueryWrapper<TRandomPaper> lqw = new LambdaQueryWrapper<TRandomPaper>();
if (tRandomPaper.getStartTime() != null){
	//页面传进来Fri May 29 00:00:00 CST 2020格式的类似时间需要格式化一下
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	String startTimeFormat = sdf.format(tRandomPaper.getStartTime());
	//start_time:数据库中的开始时间,需格式为年月日的格式与传进来的开始日期进行匹配
	//条件构造器apply的查询方式解决日期和时间之间查询上的冲突
	lqw.apply("date_format(start_time, '%Y-%m-%d') = {0}", startTimeFormat);
}
List<TRandomPaper> list = iTRandomPaperService.list(lqw);

2.业务需求二:查询出待学课程,待学课程的标准是如果课程结束时间小于当前时间即为待学课程。

    相关代码如下:

LambdaQueryWrapper<CourseAllocation> lqw = new LambdaQueryWrapper<>();
lqw.eq(CourseAllocation::getUserId,userId)
	.eq(CourseAllocation::getCourseFroupKey,1)
	//course_study_end_time为数据中课程结束时间
	//使用条件构造器apply查询方式可以直接把格式一样的当前时间和课程结束时间进行比较筛选
	.apply("DATE_FORMAT(course_study_end_time,'%Y-%m-%d') > DATE_FORMAT(NOW(),'%Y-%m-%d')");
List<CourseAllocation> list = iCourseAllocationService.list(lqw);

 

MyBatis-Plus 是一个 MyBatis 的增强工具,它提供了很多便捷的功能来简化数据库操作。其中,QueryWrapper 是 MyBatis-Plus 提供的一个查询构造器,用于构建复杂的查询条件apply 方法是 QueryWrapper 的一个方法,用于将一个函数应用到 QueryWrapper 上。它接受一个 Consumer 函数式接口作为参数,通过 lambda 表达式可以对 QueryWrapper 进行进一步的定制。 下面是 apply 方法的使用示例: ```java QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(User::getStatus, 1) .apply("date_format(create_time,'%Y-%m-%d') = {0}", "2021-01-01"); List<User> userList = userMapper.selectList(queryWrapper); ``` 在这个例子中,我们首先创建了一个 QueryWrapper 对象,并使用 lambda 表达式设置了一个等值条件 `eq(User::getStatus, 1)`,表示查询状态为 1 的用户。 然后,通过 apply 方法应用了一个自定义的 SQL 片段 `"date_format(create_time,'%Y-%m-%d') = {0}"`,其中 `{0}` 表示占位符,用于接收后面传入的参数。这个 SQL 片段的作用是筛选出 create_time 字段为指定日期的数据。 最后,我们使用 QueryWrapper 对象进行查询,将查询结果赋给 userList 变量。 通过使用 apply 方法,我们可以在 QueryWrapper 中通过自定义 SQL 片段实现更复杂的查询条件。注意,在使用 apply 方法时,需要对 SQL 片段进行安全处理,以避免 SQL 注入的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值