NamedParameterJdbcTemplate举例使用
原文地址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举例使用的更多相关文章
- Ajax 概念 分析 举例
Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...
- ValueInjecter----最好用的OOM(以微信消息转对象举例)
使用数据实体的好处我这里就不多说了,但大家享受这些好处的时候,难免也对那些琐碎的赋值代码感到厌烦,基于此,我认为掌握一个oom的使用,还是很有必要的. 这种类型的工具有很多,比如automapper, ...
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
<Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
<Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...
- shell-script的简单举例
#!/bin/bash #defind the path PATH=/usr/local export PATH read -p "please input your first name: ...
- 各大浏览器内核特性及对应的Browserhacks举例
1.浏览器内核指的是什么? 简化的浏览器=用户界面+渲染引擎+js解析引擎+数据存储+网络部件 而通常所说的浏览器内核指的是页面渲染引擎(rendering engine). 2.渲染引擎 The r ...
- js调用php和php调用js的方法举例
js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="te ...
- c++局部变量经典举例
局部变量: 在函数内部声明的变量为局部变量,局部变量的意思即该变量只存活在该函数中,假如该函数调用结束,那么该变量的寿命也结束了. 举例: #include<iostream> using ...
- HTTPS Web配置举例
http://www.h3c.com.cn/Products___Technology/Technology/Security_Encrypt/Other_technology/Representat ...
随机推荐
- 给定制的vuejs组件添加v-model双向绑定支持
用过vuejs的前端工程师,对于v-model一定印象深刻.它向类似textarea,input等原生html原生添加双向数据绑定的能力非常方便.但是对于你的定制vue组件并不是能够直接应用v-mod ...
- 3-RocketMQ 简单梳理 及 集群部署笔记
原文:https://www.cnblogs.com/kevingrace/p/9015836.html 一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐 ...
- Scanner 中next()和nexline()方法的区别
在java实现字符窗口的输入时,很多人更喜欢选择使用扫描器scanner,它操作起来比较简单.在编程的过程中,我发现用scanner实现字符串的输入有两种方法,一种是next(),另一种是next ...
- 2019-09-16 PHP CURL CURLOPT参数说明(curl_setopt)
CURLOPT_RETURNTRANSFER 选项: curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 如果成功只将结果返回,不自动输出任何内容. 如果失败返回F ...
- bugku——普通的二维码(进制转换)
题目地址:http://ctf.bugku.com/files/5e480ecb178711e82bc847a208e15b32/misc80.zip 就一张二维码图片,用一些在线工具识别是乱码,用Q ...
- 跟着9张思维导图学习Javascript js 关键字和保留字 css3中的BFC,IFC,GFC和FFC
跟着9张思维导图学习Javascript 学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将 po 出我收集的 9 张 javascript 相关的思维导图(非原创). 思维导图小ti ...
- ARM开发板上查看动态库或者可执行程序的依赖关系
以ARM32开发板为例,在/lib下有一个名为ld-linux-armhf.so.3的可执行程序(在ARM64开发板上是/lib/ld-linux-aarch64.so.1),这个程序负责加载可执行程 ...
- Linux操作系统的日志管理之rsyslog实战案例
Linux操作系统的日志管理之rsyslog实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.日志介绍 1>.什么是日志 历史事件: 时间,地点,人物,事件 日志级 ...
- 安装elasticsearch+kibana+searchguard
---------------------------------安装es的search-guard-------------------------------------------------- ...
- Jmter(一)_时间戳
显示当前时间的使用Jmeter-Tools-Function Helper Dialog的__time 显示当前时间移动的使用__timeShift 有日期移动(e.g. P2D);时(PT2H);分 ...