- 浏览: 978054 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
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);
}
}
- JDBC_SpringNamedJdbcTemplate.rar (3.2 MB)
- 描述: 我的使用Spring的NamedParameterJdbcTemplate完成DAO操作实例
- 下载次数: 549
评论
发表评论
-
高级 DAO 编程 学习编译更好的 DAO 的技巧
2009-04-27 20:09 1589高级 DAO 编程学习编译 ... -
使用Spring的SimpleJdbcTemplate完成DAO操作
2009-04-24 09:35 10074SimpleJdbcTemplate内部包含了一个Name ... -
使用Spring的JdbcTemplate和BeanPropertyRowMapper完成的JDBC
2009-04-23 16:55 10648先道要加上两个包:Spring2.5下面的: spring.j ... -
策略设计模式_构建公共通用的Dao
2009-04-23 09:09 1479核心代码: Connection的工具类:详见JDBC数据库 ... -
模板设计模式_构建公共通用的Dao
2009-04-23 09:02 1270核心代码: Connection的工具类:详见:JDBC数据 ... -
使用反射实现ORM
2009-04-20 22:55 1385首先Bean在符合JavaBean的要求,即有一个无参的构造方 ... -
使用反射技术调用对象的方法,得到属性,方法等信息
2009-04-20 22:55 2289package com.mengya.test; im ... -
使用反射技术构造对象
2009-04-20 22:54 1543public class Bean { privat ... -
用JDBC访问二进制类型的数据
2009-04-20 13:08 1550JDBC操作二进制类型数据(如图片或压缩包)也是通过IO字节流 ... -
用JDBC访问大段文本数据
2009-04-20 13:07 1342JDBC操作大的文本数据是通过IO字符流操作 publ ... -
我的JDBC实例
2009-04-20 13:06 20511, 首先在配置文件(system.properties)中 ... -
了解事务的隔离级别
2009-04-20 13:05 1151隔离级别多线程并发读取数据时的正确性 用法: connne ... -
可滚动结果集与分页技术
2009-04-20 13:04 1462可滚动的结果集 Statement st = ... -
可更新和对更新敏感的结果集
2009-04-20 13:04 1564可更新的结果集(说明这些都是JDBC特殊的用法,有些数据库可能 ... -
SQL注入,PreparedStatement和Statement
2009-04-20 13:01 1948在SQL中包含特殊字符或SQL的关键字(如:' or 1 or ... -
ResultSetMetaData的使用
2009-04-20 13:00 2634ResultSetMetaData能够通过ResultSet分 ... -
ParameterMetaData的使用
2009-04-20 12:59 2570ParameterMetaData pmd = prepa ... -
JDBC自动获取数据库自动生成的主键
2009-04-20 12:55 2992PreparedStatement.getGeneratedK ... -
JDBC工具类实例
2009-04-20 12:53 1427System.properties配置文件(放在src下面) ... -
JDBC事务保存点,即事部分回滚
2009-04-20 12:52 4821JDBC中的事务保存点,即事务发生回滚的时候,回滚到保存点那里 ...
相关推荐
经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用服务器...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
提供对 spring NamedParameterJdbcTemplate、Hibernate、Mybatis 的支持 在 ParameterMapper(包括 map 和 java bean)中提供包装的 http 请求参数(自 2.0.0 起) 为http请求提供service/dao的异步调用 提供页面/...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import com.flong.commons.lang.exception.DaoAccessException; import com.flong.commons.persistence.Entity; import ...