- 浏览: 992983 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 1648高级 DAO 编程学习编译 ... -
使用Spring的SimpleJdbcTemplate完成DAO操作
2009-04-24 09:35 10124SimpleJdbcTemplate内部包含了一个Name ... -
使用Spring的JdbcTemplate和BeanPropertyRowMapper完成的JDBC
2009-04-23 16:55 10715先道要加上两个包:Spring2.5下面的: spring.j ... -
策略设计模式_构建公共通用的Dao
2009-04-23 09:09 1542核心代码: Connection的工具类:详见JDBC数据库 ... -
模板设计模式_构建公共通用的Dao
2009-04-23 09:02 1341核心代码: Connection的工具类:详见:JDBC数据 ... -
使用反射实现ORM
2009-04-20 22:55 1463首先Bean在符合JavaBean的要求,即有一个无参的构造方 ... -
使用反射技术调用对象的方法,得到属性,方法等信息
2009-04-20 22:55 2350package com.mengya.test; im ... -
使用反射技术构造对象
2009-04-20 22:54 1618public class Bean { privat ... -
用JDBC访问二进制类型的数据
2009-04-20 13:08 1609JDBC操作二进制类型数据(如图片或压缩包)也是通过IO字节流 ... -
用JDBC访问大段文本数据
2009-04-20 13:07 1401JDBC操作大的文本数据是通过IO字符流操作 publ ... -
我的JDBC实例
2009-04-20 13:06 21121, 首先在配置文件(system.properties)中 ... -
了解事务的隔离级别
2009-04-20 13:05 1210隔离级别多线程并发读取数据时的正确性 用法: connne ... -
可滚动结果集与分页技术
2009-04-20 13:04 1525可滚动的结果集 Statement st = ... -
可更新和对更新敏感的结果集
2009-04-20 13:04 1633可更新的结果集(说明这些都是JDBC特殊的用法,有些数据库可能 ... -
SQL注入,PreparedStatement和Statement
2009-04-20 13:01 2011在SQL中包含特殊字符或SQL的关键字(如:' or 1 or ... -
ResultSetMetaData的使用
2009-04-20 13:00 2705ResultSetMetaData能够通过ResultSet分 ... -
ParameterMetaData的使用
2009-04-20 12:59 2625ParameterMetaData pmd = prepa ... -
JDBC自动获取数据库自动生成的主键
2009-04-20 12:55 3054PreparedStatement.getGeneratedK ... -
JDBC工具类实例
2009-04-20 12:53 1484System.properties配置文件(放在src下面) ... -
JDBC事务保存点,即事部分回滚
2009-04-20 12:52 4895JDBC中的事务保存点,即事务发生回滚的时候,回滚到保存点那里 ...
相关推荐
如果DAO方法涉及数据库操作,可以考虑使用Spring的`@Transactional`注解,确保测试后数据库状态回滚,避免影响其他测试。 对于SpringJDBC中的Druid数据源,它是一个高效、强大的连接池实现。在测试中,我们可以配置...
1. **JDBC模板**:Spring提供了JdbcTemplate和NamedParameterJdbcTemplate这两个工具类,它们简化了基于JDBC的数据库操作,自动处理了打开和关闭连接、事务管理等繁琐工作。 2. **Hibernate集成**:Spring也支持ORM...
1. **Spring JDBC支持**:Spring通过JDBC抽象层提供了模板类JdbcTemplate和NamedParameterJdbcTemplate,它们封装了常见的JDBC操作,如执行SQL查询、更新、事务管理等,大大减少了手动处理结果集和异常的工作。...
在Spring框架中,DAO(Data Access Object)模式是将业务逻辑与数据操作解耦,使得代码更易于测试和维护。 Spring DAO模式的核心组件包括以下几个部分: 1. **JdbcTemplate**: Spring提供的一个核心模板类,用于...
6. **DAO(Data Access Object)模式**:Spring推荐使用DAO模式来组织数据访问层,这样可以将业务逻辑和数据访问逻辑分离,提高代码的可测试性和可维护性。 7. **AOP(面向切面编程)**:Spring的AOP功能可用于实现...
6. **定制化操作**:虽然JDBCTemplate提供了很多通用功能,但有时仍需编写自定义SQL,这时可以使用`NamedParameterJdbcTemplate`,它支持参数化的SQL,使代码更加清晰。 7. **异常处理**:JDBCTemplate会自动处理...
JdbcTemplate用于基本的SQL操作,而NamedParameterJdbcTemplate支持使用命名参数的SQL语句。 4. **普通模式的新增**:使用JdbcTemplate的`update`方法执行INSERT语句。例如: ```java jdbcTemplate.update(...
Spring支持DAO模式,你可以创建DAO接口,然后实现这个接口以完成具体的数据操作。Spring的`HibernateTemplate`或`JpaTemplate`可以帮助你更方便地操作ORM框架,如Hibernate或JPA。 4. **Oracle数据库连接** 在...
4. **DAO层**:DAO(Data Access Object)层负责与数据库的交互,通常使用Spring JDBC的Template类来执行SQL查询。这里可以找到与特定表操作相关的接口和实现。 5. **模型对象(Model)**:这些对象代表了数据库中...
Spring Data Access Object(DAO)框架是Spring生态体系中用于数据库交互的重要部分,它简化了数据访问层的实现,使得开发者可以更专注于业务逻辑,而不是底层数据库操作。本文将深入探讨Spring DAO框架的入门知识,...
4. **DAO层设计**:定义数据访问对象(DAO),这些对象将使用Spring提供的模板类来执行数据库操作。例如,你可以创建一个`UserDao`接口,然后使用`@Repository`注解标记实现类。 5. **Service层设计**:业务逻辑...
综上所述,这个项目涵盖了Spring框架的基础使用,包括依赖注入、数据库操作、事务管理、Web开发等多个方面,是学习和理解Spring框架的良好实践。通过分析和实践这个项目,开发者可以深入理解Spring的工作原理,并能...
5. **数据访问层(DAO)**:处理数据库操作,通常使用Spring JDBC或JPA(Java Persistence API)来实现。Spring JDBC通过JdbcTemplate或NamedParameterJdbcTemplate提供简洁的SQL执行方式。 6. **视图(View)**:...
1. Spring JDBC:理解JdbcTemplate和NamedParameterJdbcTemplate的使用,简化数据库操作。 2. 事务管理:讲解Spring的事务传播行为,配置事务管理器,以及基于注解的事务控制。 六、Spring整合其他技术 1. Spring与...
3. **Spring与JDBC的整合**: Spring提供了JdbcTemplate和NamedParameterJdbcTemplate,简化了数据库操作,避免了原始JDBC的繁琐。`spring_dao.txt`可能会讨论这些模板类的用法,包括如何执行SQL查询、事务管理等。 ...
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. 在应用服务器...
4. 配置DAO,如使用HibernateTemplate操作数据库。 5. 创建视图,如JSP页面,展示结果。 总的来说,Spring框架通过其丰富的功能和强大的集成能力,极大地提高了Java应用的开发效率和可维护性。无论是数据访问、事务...
同时,Spring的JdbcTemplate和NamedParameterJdbcTemplate也是处理SQL查询的强大工具,它们可以和Hibernate一起使用,提供更灵活的数据访问策略。 在进阶学习中,开发者需要理解以下关键点: 1. **事务管理**:...