首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NamedParameterJdbcTemplate vs JdbcTemplate

NamedParameterJdbcTemplate vs JdbcTemplate
EN

Stack Overflow用户
提问于 2013-05-03 20:48:13
回答 2查看 55.6K关注 0票数 46

我是Spring3.x的初学者,我正在学习Spring DAO支持。我想知道NamedParameterJdbcTemplateJdbcTemplate之间的区别。从性能上看,哪一个是最好的。什么时候去找NamedParameterJdbcTemplate,什么时候去找JdbcTemplate

EN

回答 2

Stack Overflow用户

发布于 2013-05-03 23:08:46

当您使用JdbcTemplate时,您为它提供了一个SQL,对于要替换到SQL中的每个参数,都有一个?占位符。在代码中分配参数时,必须在数组中传入参数,并按照它们在数组中出现的顺序使用它们,如下所示:

代码语言:javascript
复制
Object[] args = new Object[] {"x", "y"};
String sql = "select * from foo where a = ? and b = ?";
jdbcTemplate.query(sql, args, resultSetExtractor);

因此,运行的SQL是select * from foo where a = 'x' and b = 'y'

NamedParameterJdbcTemplate允许您为参数占位符指定名称并传递映射,以便模板可以将映射名称与占位符相匹配。因此,您的代码将如下所示:

代码语言:javascript
复制
String sql = "select * from foo where a = :mya and b = :myb";
Map<String, Object> argMap = new HashMap<String, Object>();
argMap.put("mya", "x");
argMap.put("myb", "y");
namedParameterJdbcTemplate.query(sql, argMap, resultSetExtractor);

生成与第一个示例相同的SQL。

运行查询是耗时的部分,参数插入的性能是不成问题的。

其思想是,与必须按特定顺序指定参数相比,按名称匹配参数更不容易出错。在我工作过的实际应用程序中,通常我们将SQL存储在与DAO代码不同的文件中,很容易意外地以错误的顺序获取参数。

票数 81
EN

Stack Overflow用户

发布于 2013-05-03 22:21:40

没有可测量的性能差异。NamedParameterJdbcTemplate很方便,它允许您使用命名参数。如果你真的很好奇,请看一下源代码,它可以很容易地下载。我发现阅读源代码让我对我在论坛上得到的答案更有信心。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16359316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档