1.查询条件带时间的 时间必须转成时间戳*1000 或者使用字符串 否则该查询条件失效
1. DateTime oneMinutesBefore = DateUtil.offsetMinute(DateTime.now(), -1); LambdaQueryWrapper<OpenAiOrderPO> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(OpenAiOrderPO::getOrderStatus, OrderStatusEnum.CREATE.getCode()) .eq(OpenAiOrderPO::getPayStatus,PayStatusEnum.WAIT.getCode()) .lt(OpenAiOrderPO::getOrderTime, oneMinutesBefore.getTime()*1000) ; 2. DateTime thirstyMinutesBefore = DateUtil.offsetMinute(DateTime.now(), -30); LambdaQueryWrapper<OpenAiOrderPO> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(OpenAiOrderPO::getOrderStatus, OrderStatusEnum.CREATE.getCode()) .eq(OpenAiOrderPO::getPayStatus,PayStatusEnum.WAIT.getCode()) .le(OpenAiOrderPO::getOrderTime, DateUtil.format(thirstyMinutesBefore, DatePattern.NORM_DATETIME_PATTERN));
2.设置某个字段为NULL
mp 的修改默认是有选择的修改 即传入的参数不为空的时候进行修改
如果想要将某个字段设置为null的话需要在字段上进行配置
// 设置策略为IGNORED,忽略null值的判断
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String patentTitle;
策略说明
package com.baomidou.mybatisplus.annotation;
/**
* 字段策略枚举类
*/
public enum FieldStrategy {
/**
* 忽略判断
*/
IGNORED,
/**
* 非NULL判断
*/
NOT_NULL,
/**
* 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
*/
NOT_EMPTY,
/**
* 默认的,一般只用于注解里
* <p>1. 在全局里代表 NOT_NULL</p>
* <p>2. 在注解里代表 跟随全局</p>
*/
DEFAULT,
/**
* 不加入 SQL
*/
NEVER
}
3.使用lanbda 查询
public List<String> queryTimeoutOrderList() {
// NOW() >= order_time + INTERVAL 30 MINUTE
// order_time <= NOW() - 30 MINUTE 30分钟或者之前的订单
DateTime thirstyMinutesBefore = DateUtil.offsetMinute(DateTime.now(), -30);
LambdaQueryWrapper<OpenAiOrderPO> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(OpenAiOrderPO::getOrderStatus, OrderStatusEnum.CREATE.getCode())
.eq(OpenAiOrderPO::getPayStatus,PayStatusEnum.WAIT.getCode())
.le(OpenAiOrderPO::getOrderTime, DateUtil.format(thirstyMinutesBefore, DatePattern.NORM_DATETIME_PATTERN));
List<OpenAiOrderPO> openAiOrderPOList = openAiOrderDao.selectList(queryWrapper);
log.error("openAiOrderPOList==={}", JSONUtil.toJsonPrettyStr(openAiOrderPOList));
return openAiOrderPOList.stream().map(OpenAiOrderPO::getOrderId).collect(Collectors.toList());
}
4.mp 分页踩坑
无法正常分页 分页溢出 需要做配置
@Configuration
public class MybatisPlusConfig {
/**
* 新增分页拦截器,并设置数据库类型为mysql且设置系统处理分页溢出
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
// 溢出总页数后是否进行处理
paginationInnerInterceptor.setOverflow(true);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}