添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
//Controller层接收数据
//Date类型
@RequestParam(value = "startTime", required = false) Date startTime,
@RequestParam(value = "endTime", required = false) Date endTime
//String 类型
@RequestParam(value = "startTime", required = false) String startTime,
@RequestParam(value = "endTime", required = false) String endTime
//调用service方法
List<EmsLoginLog> emsLoginLogList = emsLoginLogService.findAllLogByStrTime(startTime,endTime);

Dao层/Service层

//根据Date类型的时间筛选查询
List<EmsLoginLog> findAllLogByTime(
            @Param("startTime") Date startTime,
            @Param("endTime") Date endTime
//根据String类型的时间筛选查询
    List<EmsLoginLog> findAllLogByStrTime(
            @Param("startTime") String startTime,
            @Param("endTime") String endTime

服务实现层

//根据Date类型的时间筛选查询
    @Override
    public List<EmsLoginLog> findAllLogByTime(Date startTime, Date endTime) {
        return emsLoginLogDao.findAllLogByTime(startTime,endTime);
//根据String类型的时间筛选查询
    @Override
    public List<EmsLoginLog> findAllLogByStrTime(String startTime, String endTime) {
        return emsLoginLogDao.findAllLogByStrTime(startTime,endTime);

Dao.xml文件

<!-- 根据Date类型的时间筛选查询-->
<select id="findAllLogByTime" resultMap="EmsLoginLogMap">
        select info_id, user_name, ipaddr, status, msg, login_time from ems_logininfor
--         WHERE date_format(login_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
--           and date_format(login_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
-- and login_time &gt;= #{startTime} and login_time &lt;= #{endTime}, jdbcType = TIMESTAMP
        <where>
            <if test="startTime !=null">
                and login_time &gt;=#{startTime}
            <if test="endTime != null">
                and login_time &lt;=#{endTime}
        </where>
    </select>
<!-- 根据String类型的时间筛选查询-->
    <select id="findAllLogByStrTime" resultMap="EmsLoginLogMap">
        select info_id, user_name, ipaddr, status, msg, login_time from ems_logininfor
        <where>
            <if test="startTime !=null">
                and login_time &gt;=to_date(#{startTime}, 'yyyy-MM-DD')
            <if test="endTime != null">
                and login_time &lt;=to_date(#{endTime}, 'yyyy-MM-DD')
        </where>
    </select>

http://localhost:8181/treps/a/ems/findAllLog?startTime=2022-04-11&endTime=2022-04-12

Date类型返回结果

采用Date类型接收数据如下:
在这里插入图片描述

mybatis错误如下:
随后就会报错

解决方案:

将xml文件中使用idea的注释快捷键的ctrl+/部分删除或者选择使用xml的注释

<!-- 根据Date类型的时间筛选查询-->
<select id="findAllLogByTime" resultMap="EmsLoginLogMap">
        select info_id, user_name, ipaddr, status, msg, login_time from ems_logininfor
将以下字段更换为xml专用注释或者删除,问题解决。-->
--         WHERE date_format(login_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
--           and date_format(login_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
-- and login_time &gt;= #{startTime} and login_time &lt;= #{endTime}, jdbcType = TIMESTAMP
        <where>
            <if test="startTime !=null">
                and login_time &gt;=#{startTime}
            <if test="endTime != null">
                and login_time &lt;=#{endTime}
        </where>
    </select>

结果应为:

<select id="findAllLogByTime" resultMap="EmsLoginLogMap">
        select info_id, user_name, ipaddr, status, msg, login_time from ems_logininfor
        <where>
            <if test="startTime !=null">
                and login_time &gt;=#{startTime}
            <if test="endTime != null">
                and login_time &lt;=#{endTime}
        </where>
    </select>
        WHERE date_format(login_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
         and date_format(login_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
 and login_time &gt;= #{startTime} and login_time &lt;= #{endTime}, jdbcType = TIMESTAMP
    <select id="findAllLogByTime" resultMap="EmsLoginLogMap">
        select info_id, user_name, ipaddr, status, msg, login_time from ems_logininfor
        <where>
            <if test="startTime !=null">
                and login_time &gt;=#{startTime}
            <if test="endTime != null">
                and login_time &lt;=#{endTime}
        </where>
    </select>

最终返回结果应和String类型返回结果类似。

String类型返回结果

在这里插入图片描述
String类型是接收String类型的数据之后,再从mybatis转换成Date 类型。

#总结
此次根据时间筛选查询记录主要就是xml注释一定不要用快捷键,最终还是解决了问题,这下子用Date或者String类型接收都可以了。
在此记录自己的问题与大家分享。

直接上代码测试类public class TestData {public static void main(String[] args) {List list = new ArrayList<>();list.add(new TsData("11","08",11111l));list.add(new TsData("11","080405",22222l));list.add(ne... 基于Java语言编写的Spring Boot时间工具类方法封装,主要方法如下:根据日期获取该日期内24小时的整点时刻、获取当月的 天数、根据 年、月 获取对应的月份 的 天数、根据指定日期得获取对应月份的所有日期的每日结束时间、根据指定日期得获取对应月份的所有日期、获取所在月的最后一天、获取本月 当前的日期、根据指定日期得获取对应年份的所有月的日期、获取月初时间、获取月末时间、获取当天的起始时间、获取当天的结束时间、获取昨天的开始时间、获取昨天的结束时间、当前季度的开始时间、当前季度的结束时间、从开始时间到结束时间,每隔n分钟获取一个时间点;适用人群:Java编写工具类能力较差人员;帮助大家节省时间减少开发成本 JAVA实现按时间段查询数据操作的方法发布时间:2020-08-17 09:56:01来源:亿速云阅读:161作者:小新小编给大家分享一下JAVA实现按时间段查询数据操作的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!html / jsp开始时间:结束时间:js方法:function timeCheckInfo(page,startTime,endTime,officeVal... 怎么优雅地,不添加冗余字段的情况下完成时间检索?可以参考若依中的处理方式在若依框架中,所有实体类Class都可以去集成超级父类 ->BaseEntity代码可以看到, 这里面有一堆的通用参数,包括createBy,createTime,updateBy,updateTime也在其中而这里有一个我们需要关注的参数:这个参数我们可以让前端以key-value的形式传给我们,然后我们可以将其中数据提取出来比如"时间检索"我们就可以这样用。 html / jsp开始时间:结束时间:js方法:function timeCheckInfo(page,startTime,endTime,officeVal){var startTime=$("#startTime").val();var endTime=$("#endTime").val();$.ajax({url: "../../security/base/peoplesafeimg!...