mybatis plus时间判断问题
作者:acgchan
在MyBatisPlus中,时间判断可以通过XML转义的方式实现,例如使用>、<、<>、>=、<=进行比较,这种方法涉及到SQL符号的转义,确保查询语句的安全性和准确性,特别是在处理大于、小于和等于等逻辑时,正确的转义能够防止SQL注入等安全问题
mybatis plus时间判断
<where> <if test="startTime != null"> and eventtimestamp >= #{startTime,jdbcType=TIMESTAMP} </if> <if test="endTime != null"> and eventtimestamp < #{endTime} ,INTERVAL 1 DAY) </if> </where>
方法一:使用xml 原生转义的方式进行转义#
- 字符名称 sql符号 转义字符
- 大于号 > >
- 小于号 < <
- 不等于 <> <>
- 大于等于号 >= >=
- 小于等于号 <= <=
- 与 & &
- 单引号 ' '
- 双引号 " "
<if test="startTime != null and endTime != null"> and change_time between #{startTime,jdbcType=TIMESTAMP} and #{endTime,jdbcType=TIMESTAMP} </if>
mybatis plus如何进行时间日期的比较
获取数据库中跟当前日期相等的记录时,还是调用eq方法,所以实体类包括数据库中的类型是Date,而不是DateTime,否则只能获取相同时刻的数据。
pulbic void main(){ LocalDate now = LocalDate.now(); LambdaQueryWrapper<Ebbinghaus> queryWrapper = new LambdaQueryWrapper(); queryWrapper.eq(Ebbinghasu.getCreateTime,now); ebbinghuas.list(queryWrapper); }
Mybatis-Plus的时间比较是基于数据库的函数进行的,而不是字符串的比较。在Mybatis-Plus中,可以使用Wrapper对象的ge、gt、le、lt
方法来进行时间的比较。
这些方法会根据数据库的不同,生成相应的SQL语句来实现时间的比较操作。所以,不需要将时间转换为字符串进行比较。
如果要进行天数的比较最好还是通过LocalDate做为数据的类型,而不是LocalDateTime,否则比较的也只是大于当前时刻,大于等于当前时刻。
如果对数据的时刻值有操作需求,可以进行以下设置:
@JsonFormat(pattern = "yyyy-MM-dd") private LocalDateTime createTime;
数据库中对应的字段类型设置为date,而不是datetime,这样即可以比较天数,又可以在时刻上有更为丰富的操作。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。