在使用jdbctemplate的queryForRowSet方法查询oracle数据库时,oracle的date类型,默认转换为java.sql.date类型,最坑爹的是, java.sql.date类型查询时时间会被清零,费了半天劲终于解决了

最初的代码如下:

public SqlRowSet getDataById(String

owner,String tableName,String idKey){

String sql = "";

if (idKey.equals("-9999")){

sql = "select * from "+owner+"."+tableName+" where rownum =

}else{

sql = "select * from "+owner+"."+tableName+" where id_key =" +

idKey;

return this.jdbcTemplate.queryForRowSet(sql);

SqlRowSet rowSet =

this.basDataDao.getDataById(owner,tableName,id);

value =

rowSet.getString(viewConf.getColEName()).toString();

测试了sqlrowset的getTime,getTimestamp,getDate,getobject等方法均不生效

create table mydate(id int,seqdate date)insert into mydate values(1, to_date('21-08-2003 20:28:03','DD-MM-YYYY HH24:MI:SS'));insert into mydate values(2, to_date('22-08-2003 20:28:03','DD-MM-YYYY HH24... 1.现场重现 夜深了,测试小姐姐的一顿电话袭来,张同学,你又出bug啦,你看我这根据搜索条件搜索出来的 分秒后面多了一个.0,这个.0从哪里来的????本来我是想把锅甩给前端开发的。可曾不想,前端说,我只负责对数据渲染,其他的不做任何操作。然后,我就默默地打开了idea… 2. 解决 方案 SqlRowSet sqlRowSet = jdbcTemplate . queryForRowSet (sql,param); //只有一行结果可以用if,有多行可以用while循环 while(sqlRowSet.next()) string str=sqlRowS 从 jdbcTemplate 查询 出来的 日期 值为 :2021-08-26 00:00:00 jdbcTemplate .query(sql, (RowMapper<Persion>) (resultSet, index) -> { Persion p = new Persion(); p.setBirthday(resultSet.getDate("birthday")); System.out.println(p.getBirthday()); // 假设格式化之后 开发组在数据迁移 ,报告发现一些数值为'0000/00/00'的date数据,导致数据迁移失败。这个问题有点奇怪,因为在date类型的数据的取值范围是从-4712/12/31到9999/12/31之间,并且年份不能为0。也就是说'0000/00/00'是一个非法数据,不为SQL> select to_date('0000-00-00', 'yyyy-mm-dd') from dual;sel... SpringBoot高级篇 JdbcTemplate 之数据 查询 上篇 讲了如何使用 JdbcTemplate 进行简单的 查询 操作,主要介绍了三种方法的调用姿势 queryForMap, queryForList, queryForObject 本篇则继续介绍剩下的两种方法使用说明 queryForRowSet query I. 环境准备 环境依然借助前面一篇的配置,链接如: 190407-Sprin... 使用 jdbcTemplate 查询 数据的 候可以使用queryForXXX等方法。下面我们就一一解析一下: 1、 jdbcTemplate .queryForInt()和 jdbcTemplate .queryForLong() --使用queryForInt返回user表中的记录数量,queryForInt搭配这样的sql可以在分页的 候计算总记录数 jdbcTemplate .queryForInt("s Assuming you are using Oracle here since this looks like a known issue with the 10g JDBC driver.The 10g driver reports DATE columns as Timestamp in the metadata but if you do a getObject() you get a j...