mybatis中关于日期遇到的问题

本文介绍了一种在Oracle数据库中进行日期匹配的方法,通过简单的SQL语句实现对特定日期范围内记录的精确查询。此方法适用于前台传入日期格式与数据库存储日期格式不一致的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到的问题:

前台传过来的日期为 比如 2018-07-09 00:00:00,数据库中存储的日期为 比如 2018-01-11 14:32:45这样的格式。需求为根据前台传过来的数据查询当天的记录数。

解决办法:

在写sql中(采用的oracle),使用 AA >= #{BB} and AA < #{BB}+1。

+1就可以解决“天”的问题


### 解决 MyBatis-Plus 中日期格式转换的方法 在处理数据库中的日期字段时,可能会遇到 Java 实体类属性类型与数据库字段类型的不一致情况。为了确保应用程序能够正确读取和写入这些日期值,可以利用 MyBatis-Plus 的自定义类型处理器功能来完成特定的数据转换逻辑。 #### 创建自定义类型处理器 对于日期格式化的需求,可以通过继承 `org.apache.ibatis.type.BaseTypeHandler` 类并重写相应方法来自定义处理器: ```java import com.baomidou.mybatisplus.core.handlers.AbstractSqlParserHandler; import org.apache.ibatis.type.JdbcType; public class DateTypeHandler extends BaseTypeHandler<LocalDateTime> { private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @Override public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime parameter, JdbcType jdbcType) throws SQLException { ps.setTimestamp(i, Timestamp.valueOf(parameter)); } @Override public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException { java.sql.Timestamp timestamp = rs.getTimestamp(columnName); return null == timestamp ? null : timestamp.toLocalDateTime(); } @Override public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException { java.sql.Timestamp timestamp = rs.getTimestamp(columnIndex); return null == timestamp ? null : timestamp.toLocalDateTime(); } @Override public LocalDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { java.sql.Timestamp timestamp = cs.getTimestamp(columnIndex); return null == timestamp ? null : timestamp.toLocalDateTime().format(FORMATTER); } } ``` 此代码片段展示了如何创建一个名为 `DateTypeHandler` 的自定义类型处理器[^1]。该处理器负责将 JDBC 时间戳转换为 Java8 的 `LocalDateTime` 对象,并按照指定模式进行字符串表示。 #### 注册全局类型处理器 为了让 MyBatis-Plus 使用上述自定义的类型处理器,需将其注册到全局配置文件中。可以在 application.yml 或者其他 Spring Boot 配置文件里添加如下设置: ```yaml mybatis-plus: type-handlers-package: com.example.handler # 替换成实际包路径 ``` 这一步骤告知框架去哪里查找已定义好的类型处理器类。 #### 应用场景下的注意事项 当涉及到不同版本之间的差异时,需要注意所使用的 MyBatis-Plus 是否支持某些特性或接口。例如,在较新版本中推荐使用 `PaginationInnerInterceptor` 来替代旧版的分页拦截器[^3]。不过这部分内容主要针对分页插件优化而非直接关联于日期格式转换问题上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值