在使用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...