我试图在两次之间进行选择。
顺便说一句,我正在使用带有简化的mybatis框架的springdata。
mybatis最终生成的sql是:
reparing: select * from somtable `product` where `product`.create_time>=? and `product`.create_time<=? and `product`.ou_id=? order by `product`.id DESC limit ? offset ?
Parameters: 2016-10-13 00:00:00.0(Timestamp), 2019-10-13 00:00:00.0(Timestamp), 1(Long), 10(Integer), 0(Integer)
结果为0。
但是当我在mysql工作台上尝试时,它会选择3个结果。
createTime的Java类型是Date,而JDBC类型是BigInt。
我很确定没有格式问题。
我想知道为什么吗?
这是我定义实体的方式。
package com.iot.products.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.springframework.data.annotation.*;
import org.springframework.data.mybatis.annotations.*;
import org.springframework.data.mybatis.autoconfiguration.handlers.DateNumericTypeHandler;
import org.springframework.data.mybatis.domains.LongId;
import org.springframework.data.repository.query.parser.Part;
import java.util.Date;
@Data
@MappedSuperclass
@JsonIgnoreProperties({"new"})
public class AbstractAuditable extends LongId {
@CreatedBy
@Column(name = "creator")
@Condition
protected Long creator;
@CreatedDate
@Column(name = "create_time")
@TypeHandler(DateNumericTypeHandler.class)
@org.springframework.data.mybatis.annotations.JdbcType(JdbcType.BIGINT)
@Conditions({
@Condition(type = Part.Type.AFTER, properties = "startTime"),
@Condition(type = Part.Type.BEFORE, properties = "endTime")
})
protected Date createTime;
@LastModifiedBy
@Column(name = "modifier")
protected Long modifier;
@LastModifiedDate
@Column(name = "last_modify_time")
@TypeHandler(DateNumericTypeHandler.class)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@org.springframework.data.mybatis.annotations.JdbcType(JdbcType.BIGINT)
protected Date lastModifyTime;
@Transient
protected Date startTime;
@Transient
protected Date endTime;
}