前后端传输Date类型数据时格式化日期同时多参数查询

前后端传输Date类型数据

在前端显示如 “2022-04-14 00:00:00”的Json数据格式,后端编写方法有如下几种:

JsonFormat注解

  • 在实体类的变量声明加上JsonFormat
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date time;
  • 在实体类的get方法上加入JsonFormat和JsonFileld
@JsonFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    @JSONField(
            format = "yyyy-MM-dd HH:mm:ss"
    )
    public Date getTime() {
        return time;
    }

多参数查询

Controller层

    /**
     * 方法传入对象,根据对象查询
     * @param emsLoginLog
     * @return json
     */
    @RequestMapping("/findAllLog")
    @ResponseBody
    public String findAllLog(EmsLoginLog emsLoginLog) throws ParseException {
        List<EmsLoginLog> emsLoginLogList= emsLoginLogService.findAllLog(emsLoginLog);
        return JsonMapper.getInstance().toJson(emsLoginLogList);
    }

Service 和Dao层

//Service 和Dao 添加一个查询语句即可	
List<EmsLoginLog> findAllLog(EmsLoginLog emsLoginLog);

Mybatis查询语句

根据对象有无进行查询,可多参数查询,不需要写多个查询语句。

<select id="findAllLog" parameterType="EmsLoginLog" resultMap="EmsLoginLogMap">
        select info_id, user_name, ipaddr, login_type, status, login_time from ems_logininfor
        <where>
            <if test="ipaddr != null and ipaddr != ''">
                AND ipaddr = #{ipaddr}
            </if>
            <if test="status != null and status != ''">
                AND status = #{status}
            </if>
            <if test="userName != null and userName != ''">
                AND user_name = #{userName}
            </if>
            <if test="startTime !=null">
                and login_time &gt;= #{startTime}
            </if>
            <if test="endTime != null">
                and login_time &lt;= #{endTime}
            </if>
        </where>
        order by info_id desc
    </select>

测试

使用软件 postman。
测试链接:
http://ip:port/findAllLog?endTime=2022-04-14 00:00:00&startTime=2022-04-14 10:00:00
返回结果如下:

在这里插入图片描述

Postgresql与Mysql 转换Date语法

Postgresql

  • 双:: 转换Date
<if test="endTime != null">
                and login_time &lt;= #{endTime}::Date
            </if>
  • to_date
<if test="endTime != null">
                and login_time &lt;= to_date(#{endTime},'yyyy-MM-dd HH:mm:ss')
            </if>

Mysql

  • date_format(#{endTime},‘%y%m%d’)
<if test="endTime != null '">
	and date_format(login_time,'%y%m%d') &lt;= date_format(#endTime},'%y%m%d')
</if>

此次多重查询就到此结束,如有不正,欢迎大家评论指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值