mybatis-plus踩坑

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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值