原文地址https://www.iteye.com/blog/cosmicbugs-1190279

NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干,NamedParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能。

public Object queryForObject(String sql, Map paramMap, RowMapper rowMapper)

public Object queryForObject(String sql, SqlParameterSource paramSource, RowMapper rowMapper)

SqlParameterSource的两个主要实现MapSqlParameterSource

和BeanPropertySqlParameterSource

public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)保存数据获得主键。

实例说明:

/**

* 一、NamedParameterJdbcTemplate提供了命名参数,用:x代替了?

* NamedParameterJdbcTemplate传参数可以用map或者SqlParameterSource

* 用map的好处是:x,x的值可以自由取,但是所有参数的值都必须要放到map中去,其中的key为:后面的名称,value是你传的值

* 用SqlParameterSource的好处是不用一个个的赋值,但是:x中的x的值必须和对象的属性名称一样

* 二、使用KeyHolder keyholder=new GeneratedKeyHolder();

namedjdbctemp.update(sql, ps,keyholder);这个参数可以获得主键生成值

*/

public class StuDaoImple implements StuDaointer{

private NamedParameterJdbcTemplate namedjdbctemp;

public StuDaoImple(){

namedjdbctemp=new NamedParameterJdbcTemplate(SQLConnUtil.getDataSource());

}// SQLConnUtil为JDBC工具类,提供了得到数据源的静态方法

/*

* 这里会用到NamedParameterJdbcTemplate两个好处:

* 1,不用一个个的为参数赋值。

* 2,可以轻易的得到主键自动增长值

*/

public void addStu(Stu stu) {

String sql="insert into stu values(:sname,:ssex,:sbrith)";

//:后面的名称必须和stu属性名称一样

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

KeyHolder keyholder=new GeneratedKeyHolder();

namedjdbctemp.update(sql, ps,keyholder);

//加上KeyHolder这个参数可以得到添加后主键的值

int m=keyholder.getKey().intValue();

System.out.println(m);

//Map map=keyholder.getKeys();//这样可以得到联合主键的值

//keyholder.getKeyList();//这样可以得到一些主主键值,若一次添加好几条记录

}

public int count() {

String sql="select count(*) from stu";

//可以通过NamedParameterJdbcTemplate得到JdbcTemplate

int m=namedjdbctemp.getJdbcOperations().queryForInt(sql);

return m;

}

/*

* 这里会用到NamedParameterJdbcTemplate另一个好处:

* 位置参数

*/

public void delStu(int sid) {

String sql="delete stu where s_id=:id";

Map map=new HashMap();

map.put("id", sid);

namedjdbctemp.update(sql, map);

}

public List getAllStu() {

String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu";

List list=namedjdbctemp.getJdbcOperations().query(sql,new BeanPropertyRowMapper(Stu.class));

return list;

}

public List getAllStu(Stu stu) {

String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=:sid";

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

return namedjdbctemp.query(sql, ps, new BeanPropertyRowMapper(Stu.class));

}

public Stu getOneStu(Stu stu) {

String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=:sid";

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

return (Stu)namedjdbctemp.queryForObject(sql, ps, new BeanPropertyRowMapper(Stu.class));

}

public String getStuName(Stu stu) {

String sql="select s_name as sname from stu where s_name=:sname";

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

return (String)namedjdbctemp.queryForObject(sql, ps, String.class);

}

public void updStu(Stu stu) {

String sql="update stu set s_name=:sname,s_sex=:ssex,s_brith=:sbrith where s_id=:sid";

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

namedjdbctemp.update(sql, ps);

}

}

转自http://apps.hi.baidu.com/share/detail/33704305

NamedParameterJdbcTemplate举例使用的更多相关文章

  1. Ajax 概念 分析 举例

    Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...

  2. ValueInjecter----最好用的OOM(以微信消息转对象举例)

    使用数据实体的好处我这里就不多说了,但大家享受这些好处的时候,难免也对那些琐碎的赋值代码感到厌烦,基于此,我认为掌握一个oom的使用,还是很有必要的. 这种类型的工具有很多,比如automapper, ...

  3. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)

    <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...

  4. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)

    <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...

  5. shell-script的简单举例

    #!/bin/bash #defind the path PATH=/usr/local export PATH read -p "please input your first name: ...

  6. 各大浏览器内核特性及对应的Browserhacks举例

    1.浏览器内核指的是什么? 简化的浏览器=用户界面+渲染引擎+js解析引擎+数据存储+网络部件 而通常所说的浏览器内核指的是页面渲染引擎(rendering engine). 2.渲染引擎 The r ...

  7. js调用php和php调用js的方法举例

    js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="te ...

  8. c++局部变量经典举例

    局部变量: 在函数内部声明的变量为局部变量,局部变量的意思即该变量只存活在该函数中,假如该函数调用结束,那么该变量的寿命也结束了. 举例: #include<iostream> using ...

  9. HTTPS Web配置举例

    http://www.h3c.com.cn/Products___Technology/Technology/Security_Encrypt/Other_technology/Representat ...

随机推荐

  1. SpringBoot静态资源文件

    1.默认静态资源映射 Spring Boot对静态资源映射提供了默认配置 Spring Boot默认将 /** 所有访问映射到一下目录 classpath:/static classpath:/pub ...

  2. rabbitmq 延迟队列

    1.rabbitmq 延时的原理,有2个队列,一个是发送消息,设置消息过期时间或者队列过期时间(死信队列),如果达到过期时间后 将改消息发送到指定的队列中进行处理. 链接:https://share. ...

  3. vue项目进入mui.js报错 typeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode .....

    在做项目时,引用mui报错如下 看样子就是不支持严格模式吧. 解决方法是在根目录 下的.babelrc文件里面添加过滤掉.不用严格模式

  4. 金蝶BOS元模型分析

    对一些需求变化多样的产品而言,做好可变性设计是非常重要的.国外做得好的有Siebel,国内有金蝶的BOS,实际上金蝶的BOS很多理念跟Siebel是相似的,呵呵...他们都是采用MDD的方式来解决可变 ...

  5. 使用Hybris的customer coupon进行促销活动(promotion)

    登录Backoffice,在Coupon菜单里创建一个新的类型为Customer Coupon的优惠券: 在菜单Marketing->Promotion Rules里,创建一条新的促销规则Pro ...

  6. sap设置SE38编辑器背景色

    1.SE38,随便找个程序进入,编辑模式. 点击客户端最右下角的文件夹图标: 2.设置normal 背景颜色: 3.退出,重新进就可以了. 这里很多其他类型的颜色和字体设置,根据个人爱好调整.

  7. 定时任务突然中止,告警:Thread starvation or clock leap detected

    1.背景 定时任务告警信息如下: 02:38:24.112 [HikariPool-1 housekeeper] WARN  com.zaxxer.hikari.pool.HikariPool - H ...

  8. eclipse 离线安装activiti

    1. 下载activiti离线安装包, activiti-designer-1.8.zip 2. 将上图4个jar包放在eclipse的features文件夹中 3. 打开eclipse-->H ...

  9. 安装Ubuntu后需要做的事

    卸载软件 纸牌 麻将 扫雷 数独 火狐 邮件 扫描 拍照 照片 视频 计划 日历 打印 备份 计算器 亚马逊 电源统计 音乐播放 远程桌面 To Do LibreOffice 换下载源 装机的时候下载 ...

  10. python库包大全(转)

    python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...