getJdbcTemplate().queryForList(sql)返回的list里面是空值,但是我在PL/SQL里面执行SQL的时候是有数据的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getJdbcTemplate().queryForList(sql)返回的list里面是空值,但是我在PL/SQL里面执行SQL的时候是有数据的相关的知识,希望对你有一定的参考价值。

getJdbcTemplate().queryForList(sql),你这sql语句也要传值吧!看下值是否传对了,是否传进去了。你自己测试sql语句的时候传入的值是写死的。
如果没有入参数,那问题只有一个,那就是getJdbcTemplate()得到的这个模板有问题,你看其他用同一个模板的查询语句能用不?
参考技术A 先把sql输出一下看是不是正确的追问

我说了 在PL/SQL里面执行那个sql的时候是对的,查的数据也符合条件

追答

你自己觉得可能吗?
在外部执行没有问题,放到里面就有问题了.
这些问题一般都是一些细节没有注意.你再仔细检查检查.

本回答被提问者采纳

SpringMVC GetJdbcTemplate() 从查询中获取值

【中文标题】SpringMVC GetJdbcTemplate() 从查询中获取值【英文标题】:SpringMVC GetJdbcTemplate() getting value from query 【发布时间】:2012-09-18 23:08:26 【问题描述】:

我有一个函数,我想从我使用 getJdbcTemplate 的查询中提取值,我通过传递一个字符串查询和一个对象然后从对象中访问值来提取值。我想在您实际传递字符串时访问该值。我的代码是:

这里我使用 Map 但我没有传递对象 Map results = getJdbcTemplate().queryForMap(sql, userName) 并且 userName 是一个字符串。我必须使用地图,但这是怎么写的。

public boolean OfficerExist(Officers officer)


    try

        logger.debug("About to check if officers existing");

        String sql = "SELECT userName FROM crimetrack.tblofficers WHERE userName = ?";

        logger.info("User Name Found 1");

        * Map<String, Object> results = getJdbcTemplate().queryForMap(sql, userName);

        logger.info("User Name Found 2");

        String dbUserName = (String)results.get("userName");

        logger.info("Checking if officers exist "+sql);

        if (dbUserName.equals(userName)) 

            logger.info("User Name Exists");
            return true;

        else
            logger.info("User Name Does NOT Exists");
            return false;
        
        logger.info("User Name Found 3");

        return true;

    catch(Exception e)

        logger.info(e.getMessage());
        return false;
    

【问题讨论】:

不完全确定您的要求和/或打算做什么。但是你上面的内容既不会编译也不适合简单的“官员是否存在”查询。在这里查看一些 JdbcTemplate 使用示例:mkyong.com/spring/spring-jdbctemplate-querying-examples 我正在尝试检查数据库以查看用户名是否存在。我执行查询并提取查询返回的值。一旦我提取了价值,我就可以做某事,或者如果它不做其他事情。 【参考方案1】:

要尝试的一件事是代替 Map,也许尝试只查询 Object,因为您知道您只是在查询用户名。

getJdbcTemplate().queryForObject("select username...", String.class, userName)


public String findCustomerNameById(int custId)

String sql = "SELECT NAME FROM CUSTOMER WHERE CUST_ID = ?";

String name = (String)getJdbcTemplate().queryForObject(
        sql, new Object[]  custId , String.class);

return name;

【讨论】:

以上是关于getJdbcTemplate().queryForList(sql)返回的list里面是空值,但是我在PL/SQL里面执行SQL的时候是有数据的的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC GetJdbcTemplate() 从查询中获取值

用spring getJdbcTemplate().queryForObject查询数据库里的一条记录是报错

getJdbcTemplate().queryForList(sql)返回的list里面是空值,但是我在PL/SQL里面执行SQL的时候是有数据的

如何在 Spring 中对两个查询使用相同的连接?

java调用oracle函数

Java代码判断数据库中某张表是否存在