【问题标题】:Query to check if the record exists in Spring Jdbc Template查询以检查记录是否存在于 Spring Jdbc 模板中
【发布时间】:2018-01-31 16:09:52
【问题描述】:

我对 Spring 还很陌生,我正在使用 Spring Jdbc 模板检查数据库中是否存在某个电子邮件 ID,我在这里查看但找不到正确的答案。我看起来像,@ 987654321@

任何帮助将不胜感激。

【问题讨论】:

    标签: spring jdbctemplate


    【解决方案1】:

    如果您使用jdbctemplate 和新版本的spring,您可以执行以下操作

    private boolean isEmailIdExists(String email) {
        String sql = "SELECT count(*) FROM table WHERE email = ?";
    
        int count = jdbcTemplate.queryForObject(sql, new Object[] { email }, Integer.class);
    
        return count > 0;
    }
    

    jdbcTemplatequeryForObject 方法接受 sql 查询作为第一个参数,第二个参数是 sql 查询占位符的对象数组,第三个参数是 sql 查询的预期返回值。

    在这种情况下,我们只有一个占位符,因此我将第二个参数设为 new Object[] { email },而我们期望的结果是一个整数,因此我将其设为 Integer.class

    我从https://www.mkyong.com/spring/jdbctemplate-queryforint-is-deprecated/得到了这个答案

    有兴趣的可以去看看。

    【讨论】:

    • 如果您只是在寻找存在,则无需计算行数。 SELECT 1 FROM table WHERE email = ? LIMIT 1 会做更少的工作。如果没有匹配,它将提前返回一行或零行。
    【解决方案2】:
    private boolean isEmailIdExists(String email) {
    
        return jdbcTemplate.queryForObject("SELECT EXISTS(SELECT FROM table WHERE email = ?)", Boolean.class, email);
    }
    

    http://www.postgresqltutorial.com/postgresql-exists/

    【讨论】:

    • 你迟到了。
    • 你需要在内部SELECT `SELECT EXISTS(SELECT 1 FROM table WHERE email = ?) `后面加“1”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多