【发布时间】:2018-01-31 16:09:52
【问题描述】:
我对 Spring 还很陌生,我正在使用 Spring Jdbc 模板检查数据库中是否存在某个电子邮件 ID,我在这里查看但找不到正确的答案。我看起来像,@ 987654321@
任何帮助将不胜感激。
【问题讨论】:
标签: spring jdbctemplate
我对 Spring 还很陌生,我正在使用 Spring Jdbc 模板检查数据库中是否存在某个电子邮件 ID,我在这里查看但找不到正确的答案。我看起来像,@ 987654321@
任何帮助将不胜感激。
【问题讨论】:
标签: spring jdbctemplate
如果您使用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;
}
jdbcTemplate 的queryForObject 方法接受 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 会做更少的工作。如果没有匹配,它将提前返回一行或零行。
private boolean isEmailIdExists(String email) {
return jdbcTemplate.queryForObject("SELECT EXISTS(SELECT FROM table WHERE email = ?)", Boolean.class, email);
}
【讨论】: