这个场景有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
以上两种方法都可以实现这个应用场景,当然还有其他方法,可以互相交流交流,谢谢
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)