总结:
以下是使用Java的JDBC,JDBCTemplate,Druid技术连接数据库
数据库中我设置的数据类型是date
java的dao中插入的数据类型是java.util.date
再次查询的时候不可以使用java.util.date下的,这样会报错
我的debug方法是:
先输sql:如select * from 表名';
在java下返回的date类型的数据是2021-02-16 00:00:00.0这样
我的解决办法:
使用Date对象,SimpleDateFormat进行数据的格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String strDate = sdf.format(new Date());
try {
String sql = "select * from earn where time = ? and user_id = ?";
Earn earn = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Earn>(Earn.class),
strDate, userId);
return earn;
} catch (DataAccessException e) {
e.printStackTrace();
return null;
}
那么为什么会出现这样的问题呢?
我测试了下:
在数据库环境中使用以下语句插入:
INSERT INTO pay VALUES(NULL, 50, 0, 0, '2021-02-16 10:00:00.0', 1);
语句中的日期代表了java.uti.date下的new Date()即当前时间,
当我这样插入数据库后,数据库自动将去除时间,只保留
年月日,因为数据库中Date只存储年月日
所以为了避免java中的Date和数据库中的Date数据格式不一致,
使用SimpleDateFormat将java的Date统一成和数据库中
一致的类型即可