mybatis数据库时间保存问题?

本文探讨了在使用MyBatis框架操作MySQL数据库时遇到的问题:插入datetime字段时,时间部分默认为0。文章提供了几种解决方案,包括调整POJO属性类型及正确配置jdbcType。

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

在用mybatis时,对mysql数据库是datatime字段添加值是,发现添加成功后查看数据库字段值是,只有年月日有值,时分秒则为0来表示的,更改为java.sql.date,time等也不行,如果将mybatis的映射xml的jdbcType=”DATE”改为=”TIME”,会报异常:
com.mysql.jdbc.MysqlDataTruncation: Data truncation…

解决方法:
对于Ibatis操作Date/Time/DateTime,总结如下:

  1. 将pojo的属性类型设置为java.sql.Date(或java.sql.Time, java.sql.Timestamp),此时会严格遵循这三种类型的语义。但此方法因存在前文中提到的性能问题,在JDK1.6以前的JDK版本中能少使用就少使用。
  2. 如果你想在pojo中使用java.util.Date, 则要注意:

    完整的日期时间,要确保jdbcType为空,或为DATE,TIME以外的值  
    只需要时间,要指定jdbcType=”TIME”  
    只需要日期,要指定jdbcType=”DATE”  
    
### 关于 MyBatis 8.0 数据库连接 JAR 包的下载 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。对于 MyBatis 8.0 的数据库连接相关 JAR 包的获取方式如下: #### 1. 使用 Maven 构建工具 如果项目基于 Maven,则可以在 `pom.xml` 文件中添加以下依赖项以引入 MyBatis 和其数据库驱动程序的相关依赖[^4]。 ```xml <dependencies> <!-- MyBatis Core --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> <!-- 当前最新稳定版可能并非8.0,请确认官方文档 --> </dependency> <!-- MySQL Connector/J 驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <!-- 如果使用 Spring Boot 可选集成 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> </dependencies> ``` 注意:截至当前时间点(2023年),MyBatis 官方尚未发布正式版本号为 8.0 的核心库。因此建议查阅 [MyBatis 官方仓库](https://mvnrepository.com/artifact/org.mybatis/mybatis) 获取最新的可用版本信息[^5]。 #### 2. 手动下载 JAR 包 如果不希望通过构建工具管理依赖关系,可以手动访问中央 Maven 存储库网站并下载所需的 JAR 文件: - **MyBatis**: https://repo.maven.apache.org/maven2/org/mybatis/mybatis/ - **MySQL JDBC Driver**: https://dev.mysql.com/downloads/connector/j/ 选择适合的操作系统平台和 Java 版本对应的二进制文件进行安装配置。 #### 3. 缓机制概述 为了提高性能减少频繁操作带来的开销,在实际开发过程中通常会启用二级缓功能。当第一次加载某个对象之后将其保存至内区域;当下次请求相同的记录时便可以从高速缓冲区读取而无需重新执行昂贵的 I/O 调度动作[^2]。 ```java @CacheNamespace(blocking=true) public interface TestMapper { @Select("SELECT * FROM student WHERE sid=#{sid}") Student getStudentBySid(int sid); } ``` 以上代码片段展示了如何定义带有注解形式开启全局共享型 LRU 或 FIFO 类型策略控制下的持久化实体类关联规则设置方法声明部分[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值