JQuery根据时间查询Pgsql中的数据

需求:使用JQuery,操作pg数据库,查询一天之内的打卡记录
前提:pgsql数据库;数据库中打卡时间类型为timestamp;
前端的传过来的时间类型为String
做法
第一步:添加注解

@DateTimeFormat(pattern = "yyyy-MM-dd") Date clockTime

第二步

booleanBuilder.and(attendanceEntity.clockTime.between(DateUtil.beginOfDay(clockTime),DateUtil.endOfDay(clockTime)));

完整代码例子

//工具生成的Querydsl实体类
 QAttendanceEntity attendanceEntity = QAttendanceEntity.attendanceEntity;
        //StringTemplate dateExpr = Expressions.stringTemplate("to_date({0}::text,'YYYY-MM-DD')",attendanceEntity.clockTime);

        BooleanBuilder booleanBuilder = new BooleanBuilder(
                attendanceEntity.status.eq(0)
        );

        if (clockTime != null){
                 booleanBuilder.and(attendanceEntity.clockTime.between(DateUtil.beginOfDay(clockTime),DateUtil.endOfDay(clockTime)));
        }
        if (StringUtils.isNotEmpty(username)){
            booleanBuilder.and(attendanceEntity.userName.eq(username));
        }

        List<AttendanceVO> collect = queryFactory.selectFrom(attendanceEntity)
                .where(booleanBuilder)
                .orderBy(attendanceEntity.createTime.desc())
                .fetch()
                .stream()
                .map(entity -> {
                    AttendanceVO attendanceVO = new AttendanceVO();
                    BeanUtil.copyProperties(entity, attendanceVO);
                    return attendanceVO;
                }).collect(Collectors.toList());
        return ResultUtil.success(collect);

其他解决办法:
也可以直接使用

@Autowired
 private JdbcTemplate jt;

封装原生sql,例子为

 StringBuilder sb = new StringBuilder();
        sb.append("select \n" +
                "t_a_i.user_id as userId,\n" +

                "t_a_m.id as id,\n" +
                "t_a_m.attendance_id as attendanceId,\n" +
                "t_a_m.forget_times as forgetTimes,\n" +
                "t_a_m.late_times as lateTimes,\n" +
                "t_a_m.trip_days as tripDays,\n" +
                "t_a_m.sick_leave as sickLeave,\n" +
                "t_a_m.affair_leave as affairLeave,\n" +
                "t_a_m.work_overtime as workOverTime,\n" +
                "t_a_m.settled_work_overtime as settledWorkOverTime,\n" +
                "t_a_m.holiday_work_overtime as holidayWorkOvertime\n" +
                "from t_attendance_months as t_a_m\n" +
                "left join t_attendance_info as t_a_i\n" +
                "on t_a_i.id = t_a_m.attendance_id\n" +
                "where t_a_i.employee_code = '");
        sb.append(employeeCode).append("'and t_a_i.is_delete = 0\n");
        if (!StringUtils.isEmpty(time)) {
            sb.append("and to_date(t_a_m.create_time, 'yyyy-mm-dd HH:ii:ss') like '");
            sb.append(time).append("%'");
        }
        sb.append("ORDER BY t_a_i.months DESC");
        try {
            return jt.query(sb.toString(),new BeanPropertyRowMapper<>(AttendanceMonthVO.class));
        } catch (Exception e) {
            return null;
        }

方式很多,第一种比较优雅,以后代码维护更方便

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值