IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Mybatis根据日期模糊查询 -> 正文阅读

[开发测试]Mybatis根据日期模糊查询

? ? ? ? 根据传入的日期模糊查询,返回指定数据的相应字段内容API。

????????核心实现方法是运用SQL的DATEDIFF函数,该函数的作用是返回两个日期之间的天数;例如DATEDIFF(2021-12-12, 2021-12-13)结果就为1。而DATEDIFF在此处的使用方法,是获取数据库中传入日期当天的数据,因此在SQL中的代码如下:

        select create_time,
               username,
               operate_type,
               log_content
        from sys_log
        where 1 = 1
        and datediff(create_time, '2021-12-13') = 0

? ? ? ? 由最后一行的datediff() = 0可见,我们从数据库中查询的是与 2021-12-13 相差日期为0天的数据,也就是2021-12-13当天的所有数据。

? ? ? ? 按理来说思路已经很清晰了,只需要在业务代码中具体实施一下就好,xml中的代码如下:

    <select id="getLogList" resultType="modules.syslog.vo.SysLogTestVo">
        select create_time,
               username,
               operate_type,
               log_content
        from sys_log
        where 1 = 1
        <if test="SysLogTestVo.username != null">
            and username like concat ('%', #{SysLogTestVo.username}, '%')
        </if>
        <if test="SysLogTestVo.createTime != null">
            and datediff(create_time, #{SysLogTestVo.createTime})= 0
        </if>
        <if test="SysLogTestVo.logContent != null">
            and log_content = #{SysLogTestVo.logContent}
        </if>
    </select>

????????但是在给postman传入'2021-12-13'后,报错信息告诉我String格式解析到Date格式失败:

Cannot deserialize value of type `java.util.Date` from String "2021-12-13"

????????而我传入 '2021-12-13 00:00:00'时,又能成功解析了。意思就是,我必须传入一个完全符合Datetime格式的数据,可是前台传给我的数据只会是一个日期,这个问题又没法解决了。

? ? ? ? 最后发现问题是在实体类变量的注解上,创建了一个新的VO层,并给createTime设立了符合前台传输数据的格式:

    //这种格式JsonFormat下,要求传入的数据是"yyyy-MM-dd HH:mm:ss"
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date createTime;

    //而创建的VO层只需要传入"yyyy-MM-dd",就可以成功解析
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date createTime;

? ? ? ? 至此问题全部解决,只需要在Params里传入'2021-12-13',就可以查询到当天的所有数据。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 16:15:41  更:2021-12-14 16:16:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 7:31:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码