异常信息:java.time.LocalDateTime to java.util.Date
java.sql.SQLException: Cannot set accDate: incompatible types, cannot convert java.time.LocalDateTime to java.util.Date Query: select accid,accname,password,accdate,state,balance from account Parameters: []
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:527)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:391)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:266)
at com.wdzl.demo12.TestQuery.queryList(TestQuery.java:39)
at com.wdzl.demo12.TestQuery.main(TestQuery.java:26)
原因:
mysql表字段设置类型为 Datetime 类型时,会出现次问题;
原因是从 mysql 驱动版本:mysql-connector-java-8.0.23.jar 开始,数据库端类型 Datetime类型在JDBC查询时,会被封装为 java.time.LocalDateTime。
而我们在设计实体类时,常用类型为 java.util.Date类型。所以导致数据类型不一致异常。
解决办法:
1. 降低版本为 mysql-connector-java-8.0.22.jar及以下版本
或
2.修改数据库字段类型为 date 类型
或
3. 修改实体类日期类型为 LocalDateTime
学习JDBC 详细教程:
JDBC 完整案例详解教程_zp8126的博客-CSDN博客
或视频
JDBC(Java连接MySQL数据库)详细案例教程:CRUD、注入安全、连接池、事务、dbutils等_哔哩哔哩_bilibili