实际应用场景——查询一张表1分钟添加了多少条数据

实际应用场景——查询一张表1分钟添加了多少条数据,第1张

解析

这个场景有2种实现方式:一种需要写SQL语句,一种不需要写SQL,逻辑都一样

1.可以用SQL语句来实现 SQL语句 SELECT * FROM `表名` WHERE  (创建时间) <(小于) #{当前时间}  AND (创建时间) >(大于) #{当前时间减一分钟} 代码

controller

    @GetMapping("/SqlTest")
    public AjaxResult SqlTest() {
        AjaxResult ajax = new AjaxResult().success();
        //时间格式化对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //当前时间
        Date date = new Date();
        //当前时间减去1分钟
        Date date1 = new Date(date.getTime() - 60000);
        //查询像数据集合
        List list = peopleMapper.selectByDate(date, date1);
        ajax.put("size", list.size());
        ajax.put("data", list);
        return ajax;
    }

mapper

   List selectByDate(@Param("date") Date date, @Param("date1") Date date1);

注意:

mapper如果有多个参数需要加上@Param()注解

mapper.xml

测试:

数据库添加一条测试数据,

浏览器输入:http://localhost:9527/SqlTest

 2.不写SQl的做法

因为项目集成了Mbatis-Plus,可以利用里面的方法,selectList()

代码 controller
@GetMapping("/CodeTest")
    public AjaxResult CodeTest() throws IOException {
        AjaxResult ajax = AjaxResult.success();
        //接收对象
        ArrayList l = new ArrayList<>();
        //查询全部数据
        List list = peopleMapper.selectList(null);
        //时间格式化对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //当前时间
        Date date = new Date();
        //当前时间前一分钟时间
        Date beforeDate = new Date(date.getTime() - 60000);
        list.forEach(r -> {
            //判断一个时间是否在两个时间之间
            if (dateUtils.ifDate(beforeDate, date, r.getCreateTime())) {
                //如果在这个时间段,添加到另一个List中
                l.add(r);
            }
        });
        //设置返回数量
        ajax.put("size", l.size());
        //设置返回数据
        ajax.put("data", l);
        return ajax;
    }
工具类
 /**
     * 判断一个时间是否在另外两个时间段之内
     *
     * @param startDate   开始时间
     * @param endDaate    结束时间
     * @param currentDate 当前时间
     * @return
     */
    public boolean ifDate(Date startDate, Date endDaate, Date currentDate) {
        long time = startDate.getTime();
        long time1 = endDaate.getTime();
        long time2 = currentDate.getTime();
        if (time2 > time && time2 < time1) {
            return true;
        } else {
            return false;
        }
    }

测试:浏览器输入:http://localhost:9527/CodeTest

以上两种方法都可以实现这个应用场景,当然还有其他方法,可以互相交流交流,谢谢

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/945006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存