Spring NamedParameterJdbcTemplate 详解

摘要:
转移自:https://zmx.iteye.com/blog/373736NamedParameterJdbcTemplate该类基于JdbcTemplate类,并且被封装以支持命名参数特性。NamedParameterJdbcTemplate主要提供以下三种类型的方法:execute方法、query和queryForXXX方法、update和batchUpdate方法。让我们举个例子:1

转自: https://zmx.iteye.com/blog/373736

NamedParameterJdbcTemplate类是基于JdbcTemplate类,并对它进行了封装从而支持命名参数特性。

NamedParameterJdbcTemplate主要提供以下三类方法:execute方法、query及queryForXXX方法、update及batchUpdate方法。

首先让我们看个例子吧:

 1 @Test
 2 public void testNamedParameterJdbcTemplate1() {
 3 NamedParameterJdbcTemplate namedParameterJdbcTemplate = null;
 4 //namedParameterJdbcTemplate =
 5 //    new NamedParameterJdbcTemplate(dataSource);
 6 namedParameterJdbcTemplate =
 7 new NamedParameterJdbcTemplate(jdbcTemplate);
 8     String insertSql = "insert into test(name) values(:name)";
 9     String selectSql = "select * from test where name=:name";
10     String deleteSql = "delete from test where name=:name";
11     Map<String, Object> paramMap = new HashMap<String, Object>();
12     paramMap.put("name", "name5");
13     namedParameterJdbcTemplate.update(insertSql, paramMap);
14     final List<Integer> result = new ArrayList<Integer>();
15 namedParameterJdbcTemplate.query(selectSql, paramMap,
16 new RowCallbackHandler() {
17         @Override
18         public void processRow(ResultSet rs) throws SQLException {
19             result.add(rs.getInt("id"));
20         }
21     });
22 Assert.assertEquals(1, result.size());
23 SqlParameterSource paramSource = new MapSqlParameterSource(paramMap);
24 namedParameterJdbcTemplate.update(deleteSql, paramSource);
25 }

接下来让我们分析一下代码吧:

1)NamedParameterJdbcTemplate初始化:可以使用DataSource或JdbcTemplate 对象作为构造器参数初始化;

2)insert into test(name) values(:name):其中“:name”就是命名参数;

3) update(insertSql, paramMap):其中paramMap是一个Map类型,包含键为“name”,值为“name5”的键值对,也就是为命名参数设值的数据;

4)query(selectSql, paramMap, new RowCallbackHandler()……):类似于JdbcTemplate中介绍的,唯一不同是需要传入paramMap来为命名参数设值;

5)update(deleteSql, paramSource):类似于“update(insertSql, paramMap)”,但使用SqlParameterSource参数来为命名参数设值,此处使用MapSqlParameterSource实现,其就是简单封装Java.util.Map。

NamedParameterJdbcTemplate类为命名参数设值有两种方式:java.util.Map和SqlParameterSource:

1)java.util.Map:使用Map键数据来对于命名参数,而Map值数据用于设值;

2)SqlParameterSource:可以使用SqlParameterSource实现作为来实现为命名参数设值,默认有MapSqlParameterSource和BeanPropertySqlParameterSource实现;MapSqlParameterSource实现非常简单,只是封装了java.util.Map;而BeanPropertySqlParameterSource封装了一个JavaBean对象,通过JavaBean对象属性来决定命名参数的值。

1 package cn.javass.spring.chapter7;
2 public class UserModel {
3     private int id;
4     private String myName;   
5     //省略getter和setter     
6 }
 1 @Test
 2 public void testNamedParameterJdbcTemplate2() {
 3     NamedParameterJdbcTemplate namedParameterJdbcTemplate = null;
 4     namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
 5     UserModel model = new UserModel();
 6     model.setMyName("name5");
 7     String insertSql = "insert into test(name) values(:myName)";
 8     SqlParameterSource paramSource = new BeanPropertySqlParameterSource(model);
 9     namedParameterJdbcTemplate.update(insertSql, paramSource);
10 }

可以看出BeanPropertySqlParameterSource使用能减少很多工作量,但命名参数必须和JavaBean属性名称相对应才可以。

免责声明:文章转载自《Spring NamedParameterJdbcTemplate 详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇高德地图实现地址检索获取结果列表和坐标Oracle获取alter.log的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

WinRAR 激活的小办法

WinRAR是一个强大的压缩文件管理工具。它可以备份数据,减少电子邮件附件的大小,解压缩从Internet下载的RAR、ZIP和其他压缩文件,并以RAR和ZIP格式创建压缩文件。如果您使用的正版WinRAR未激活,请将以下注册代码复制到新文档并将其重命名为rarreg。键,然后复制rarreg。键到WinRAR根目录以激活它。...

ES基本查询总结

ES与数据库比较查询操作Elasticsearch中当我们设置Mapping完毕后,就可以按照设定的方式导入数据。以下内容的原文需要参考ES官方文档1、结构化检索针对字段类型:日期、时间、数字类型,以及精确的文本匹配。结构化检索特点:*1)结构化查询,我们得到的结果总是非是即否,要么存于集合之中,要么存在集合之外。term查询是简单的,它接受一个字段名以及我...

IDEA查看第三方jar包的源代码时出现Decompiled.class file, bytecode version:52.0 (Java 8)的解决方案

解决方案:以tomcat为例。在tomcat官方网站下载src结尾的源代码文件后,1.在IDEA中设置ProjectStructure 2.选择SDK-˃Sourcepath-˃Add 3.选择下载的tomcat源代码压缩包,如果一路都没问题,则源代码配置完成...

python 钉钉 消息推送 文件传输

到此完成了钉钉推送文件小程序的设置,接下来准备需要的信息:1、chatid通过地址https://wsdebug.dingtalk.com/使用钉钉管理员的钉钉扫描二维码然后定位到v0.1.2复制首页的未认证服务商CorpId并替换其中的xxx,点击执行,此时钉钉会弹出弹出框,让选择群聊,点击需要推送文件的群聊,确定即可,如图返回了chatid。appkey...

TVP-VAR模型

随机波动的概念在TVP-VAR中非常重要。随机波动是由布莱克于1976年提出的,此后在计量经济学中得到了极大的发展。为了避免这个问题,TVP-VAR模型假设了随机波动。首先介绍了随机波动时变参数回归模型的估计算法。因此,TVP-VAR模型:、、是时变的。然而,允许VAR模型的每个参数随时间变化可能会导致过度识别问题。...

UOS从安装IE8到放弃IE8

以下为打开百度的界面,看到下面的进度条没有,我竟然可以截到进度条,说明有多慢,自行体会吧!来来来,安装好后,必须要截图证明一个已经安装上了,版本号截图拿上来期间访问网站有报错。实在无耐,不好用,还是看怎么用火狐来得实在,至此放弃...