- 浏览: 101053 次
- 性别:
- 来自: 广州
文章分类
最新评论
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://hi.baidu.com/%C5%ED%BD%F0%BD%F0%BB%D4%BB%D4/blog/item/76e7ece269c2483fb9382051.html
发表评论
-
【转】导出网页中的table到excel 使用Java方式
2011-08-04 12:02 1711response.setContentType(&qu ... -
【转】oracle 行转列
2011-05-12 14:50 954数据库查询中难免会遇到行列转换的情况,摘列一些较精典的 ... -
【转】select元素javascript常用操作
2011-05-03 16:15 691/*-------------------------- ... -
【转】使用Spring的SimpleJdbcTemplate完成DAO操作
2011-04-22 15:31 1016SimpleJdbcTemplate内部包含了一个Na ... -
【转】Servlet实现文件下载的源码
2011-04-18 11:37 627一、如何使用如果此Servlet命名为download ... -
【转】Oracle:Merge Into 语句代替Insert/Update在Oracle中的应用实战
2011-04-13 14:30 2081动机: 想在Oracle中 ... -
【转】直接把EXCEL粘贴到网页上
2011-04-06 08:33 1253<html> <meta http- ... -
【转】word 任意页开始插入页码
2011-03-31 15:45 1103一、如果你想从第二页开始插入页码的话: 1、将鼠标定位 ... -
【转】最简单的java模板引擎——JTPL
2011-03-27 15:31 2527sample1.jtpl < ... -
【转】JS特效代码大全(七)超全的JS树形菜单共享
2011-03-25 08:59 1273JS特效代码大全(七)超全的JS树形菜单共享 标 ... -
【转】JavaScript获取select的值全解
2011-03-24 15:53 850获取显示的汉字 document.getElemen ... -
【转】常用的JavaScript验证正则表达式
2011-03-07 13:22 776下面都是我收集的一些比较常用的正则表达式,因为平常可能在 ... -
【转】flex的问题解决
2011-02-27 03:05 1311出自:http://www.iteye.com/problem ... -
【转】软考、职称、职称资格及三者之间的关系
2010-08-02 09:19 1510目前,人事部 ... -
【转】如何学Flex
2010-07-31 18:54 894如何学Flex 近由于 ... -
【转】javamail发送邮件的简单实例
2010-07-29 11:19 1173今天学习了一下JavaMail,javamail发送 ... -
【转】hibernate的Criteria Query
2010-07-29 10:03 1167当查询数据时,人们往往需要设置查询条件。在SQL或HQ ...
相关推荐
本文将深入探讨如何使用Spring的`NamedParameterJdbcTemplate`类来实现高效的DAO(Data Access Object)操作。`NamedParameterJdbcTemplate`是Spring JDBC模块中的一个强大工具,它允许我们以更加清晰、安全的方式...
Spring通过JdbcTemplate和NamedParameterJdbcTemplate提供了一种更简洁、更安全的方式来执行JDBC操作。这些模板类封装了数据库连接的获取、关闭,以及异常处理,使得开发者无需关心繁琐的资源管理。此外,它们还提供...
如果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. **定制化操作**:虽然JDBCTemplate提供了很多通用功能,但有时仍需编写自定义SQL,这时可以使用`NamedParameterJdbcTemplate`,它支持参数化的SQL,使代码更加清晰。 7. **异常处理**:JDBCTemplate会自动处理...
Spring支持DAO模式,你可以创建DAO接口,然后实现这个接口以完成具体的数据操作。Spring的`HibernateTemplate`或`JpaTemplate`可以帮助你更方便地操作ORM框架,如Hibernate或JPA。 4. **Oracle数据库连接** 在...
JdbcTemplate用于基本的SQL操作,而NamedParameterJdbcTemplate支持使用命名参数的SQL语句。 4. **普通模式的新增**:使用JdbcTemplate的`update`方法执行INSERT语句。例如: ```java jdbcTemplate.update(...
6. **DAO(Data Access Object)模式**:Spring推荐使用DAO模式来组织数据访问层,这样可以将业务逻辑和数据访问逻辑分离,提高代码的可测试性和可维护性。 7. **AOP(面向切面编程)**:Spring的AOP功能可用于实现...
4. **DAO层**:DAO(Data Access Object)层负责与数据库的交互,通常使用Spring JDBC的Template类来执行SQL查询。这里可以找到与特定表操作相关的接口和实现。 5. **模型对象(Model)**:这些对象代表了数据库中...
4. **DAO层设计**:定义数据访问对象(DAO),这些对象将使用Spring提供的模板类来执行数据库操作。例如,你可以创建一个`UserDao`接口,然后使用`@Repository`注解标记实现类。 5. **Service层设计**:业务逻辑...
综上所述,这个项目涵盖了Spring框架的基础使用,包括依赖注入、数据库操作、事务管理、Web开发等多个方面,是学习和理解Spring框架的良好实践。通过分析和实践这个项目,开发者可以深入理解Spring的工作原理,并能...
Spring Data Access Object(DAO)框架是Spring生态体系中用于数据库交互的重要部分,它简化了数据访问层的实现,使得开发者可以更专注于业务逻辑,而不是底层数据库操作。本文将深入探讨Spring DAO框架的入门知识,...
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与...
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. 在应用服务器...
3. **Spring与JDBC的整合**: Spring提供了JdbcTemplate和NamedParameterJdbcTemplate,简化了数据库操作,避免了原始JDBC的繁琐。`spring_dao.txt`可能会讨论这些模板类的用法,包括如何执行SQL查询、事务管理等。 ...
其中,Spring提供的三个主要模板类——`JdbcTemplate`、`NamedParameterJdbcTemplate`和`SimpleJdbcTemplate`,极大地简化了数据库操作,减少了代码量,提高了代码的可读性和可维护性。 #### JdbcTemplate `...
经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...