java mybatis mysql使用LocalDateTime查询问题

7 篇文章 0 订阅

使用LocalDateTime查询时,首先遇到问题:

invalid comparison: java.time.LocalDateTime and java.lang.String

整了半天终于找到问题所在:在mapper.xml文件中,对该参数进行了LocalDateTimeString的对比,如下:



<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
    AND createTime BETWEEN #{startTime} AND #{endTime}
</if>

修改为以下格式解决问题:


<if test="startTime != null and endTime != null">
    AND createTime BETWEEN #{startTime} AND #{endTime}
</if>

但是经过范围查询还是为空集,照理说不应该,观察后台日志,发现LocalDateTime输出的是诸如"2020-11-20T13:34:00",但是mysql里面输出的是"2020-11-20 13:34:00",没有T,因此还是LocalDateTimeString的比较,这个问题困扰了好久,最后参考文章 LocalDate、LocalTime、LocalDateTime 和mysql5.7交互解决问题,原来是版本原因:
在这里插入图片描述
由于

如果想在实体Entity里面中使用Java8的日期LocalDate、LocalDateTime类型,

则必须要求数据库驱动的版本不能低于4.2

查看mysql-connector-java版本,为5.1.*,低于5.1.37,且则数据库的驱动版本低为4.0,因此进行更新,

在这里插入图片描述
mavenpom.xml依赖配置文件直接更改版本号为5.1.37Reload project即可:
在这里插入图片描述
最终查询能够成功输出数据:
在这里插入图片描述
mysql转换为DO的数据也成功转换为LocalDateTime
在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java MyBatis是一个使用Java语言编写的持久层框架,用于与数据库进行交互。在开发过程中,防止注入攻击是一个非常重要的安全问题。 下面是一些方法可以用来防止Java MyBatis的注入攻击: 1. 使用参数化查询使用预编译的参数化查询语句可以有效地防止注入攻击。参数化查询包括使用“?”占位符代替实际的参数值,并将参数值和查询语句分开。MyBatis会自动对参数化查询进行预编译,然后在执行查询时将参数值填充到占位符中,从而防止注入攻击。 2. 输入验证:在接收用户输入时,必须对输入数据进行验证。例如,可以使用正则表达式对输入进行验证,以确保输入的是符合预期的数据。同时,还可以使用编码过滤器来过滤特殊字符,防止注入攻击。 3. 使用动态SQL:在MyBatis中,可以使用动态SQL来构建查询语句。使用动态SQL可以根据不同的条件构建不同的查询语句,从而防止注入攻击。在使用动态SQL时,应尽量避免直接拼接字符串,而是使用MyBatis提供的参数替换和条件判断等功能。 4. 访问控制:在数据库中,应该设置合适的访问控制权限,限制用户的访问范围。只给予用户必要的权限,避免用户进行恶意操作。 总之,在使用Java MyBatis开发时,我们应该始终保持警惕,注意防止注入攻击。通过使用参数化查询、输入验证、动态SQL和访问控制等方法,可以有效地防止注入攻击,保护应用程序的安全。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值