mybatis时间查询
时间: 2025-01-08 20:43:45 浏览: 50
### MyBatis 中的时间字段查询
在 MyBatis 中处理时间字段的查询可以通过多种方式进行优化和简化。为了确保 SQL 查询能够高效地操作数据库中的时间数据,可以采用如下方法:
#### 使用 `DATE_FORMAT` 函数进行格式化
当需要按照特定格式展示日期时,在 MySQL 数据库中可以直接利用 `DATE_FORMAT()` 函数来完成这一需求[^1]。
```sql
SELECT DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS formatted_create_time FROM table_name WHERE ...
```
#### 动态设置时间范围条件
对于涉及时间段筛选的情况,比如查询某段时间内的记录,MyBatis 支持通过 `<if>` 标签实现动态 SQL 的拼接功能。
```xml
<select id="selectByTimeRange" parameterType="map" resultType="com.example.Entity">
SELECT * FROM entity_table
<where>
<if test="startTime != null and endTime != null">
AND create_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
</select>
```
#### 自动填充创建时间和更新时间
针对每次新增或修改记录时自动维护时间戳的需求,可以在实体类上定义相应的属性,并配合拦截器或者插件机制达到目的[^2]。
```java
@MappedSuperclass
public abstract class BaseEntity {
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
// getter 方法省略...
}
// 插入操作前自动设置createTime
@Override
protected void insertFill(MetaObject metaObject) {
if (metaObject.hasGetter("createTime")) {
Object createTimeValue = LocalDateTime.now();
metaObject.setValue("createTime", createTimeValue);
}
}
```
阅读全文
相关推荐




















