mybatis-plus LocalTime查询不到数据

问题描述

  • mybatis-plus 使用LocalTime查询的时候通过代码查询不到记录,通过代码打印出来的sql日志直接在数据库执行可以查询到记录
  • 数据库的建表语句
create table room_time_unit
(
    id         bigint unsigned auto_increment comment '主键'
        primary key,
    code       int                  not null comment '时间段code',
    hour       int                  not null comment '小时',
    step       int                  not null comment '一个时间间隔长度(分)',
    start_time time                 not null comment '开始时间',
    end_time   time                 not null comment '结束时间',
    is_deleted tinyint(1) default 0 not null comment '是否删除(0否/1是)',
    deleted_at datetime             null comment '删除时间'
)
    comment '会议预约时间单位集合表' charset = utf8mb4;
  • java实体类对应的LocalTime字段
    /**
     * 开始时间
     */
    @TableField("start_time")
    private LocalTime startTime;

    /**
     * 结束时间
     */
    @TableField("end_time")
    private LocalTime endTime;
  • 使用mybatis-plus条件构造器查询的java代码
        QueryWrapper<RoomTimeUnit> timeUnitQueryWrapper = new QueryWrapper<>();
        timeUnitQueryWrapper.eq("step", roomConfig.getMinStep())
                .ge("start_time", roomConfig.getStartServiceTime())
                .le("end_time", roomConfig.getEndServiceTime());
        List<RoomTimeUnit> roomTimeUnits = timeUnitMapper.selectList(timeUnitQueryWrapper);
  • 代码执行打印的sql执行语句,可以看到查询出来的结果记录为0
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2b08fde2] will not be managed by Spring
==>  Preparing: SELECT id,deleted_at,is_deleted AS deleted,code,hour,start_time,step,end_time FROM room_time_unit WHERE is_deleted=0 AND (step = ? AND start_time >= ? AND end_time <= ?) 
==> Parameters: 15(Integer), 08:00(LocalTime), 18:00(LocalTime)
<==      Total: 0
  • 通过mybatis-log 格式化sql
    在这里插入图片描述
  • 把sql在数据库连接工具直接执行,可以查询到记录
    在这里插入图片描述

解决

  • 数据格式问题,把LocalTime参数使用String传入
        QueryWrapper<RoomTimeUnit> timeUnitQueryWrapper = new QueryWrapper<>();
        timeUnitQueryWrapper.eq("step", roomConfig.getMinStep())
                .ge("start_time", roomConfig.getStartServiceTime().toString())
                .le("end_time", roomConfig.getEndServiceTime().toString());
        List<RoomTimeUnit> roomTimeUnits = timeUnitMapper.selectList(timeUnitQueryWrapper);
  • 调试代码可以看到,本次可以查询到记录
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值