可以利用NamedParameterJdbcDaoSupport 已经封装的NamedParameterJdbcTemplate方便的进行sql中参数的初始化工作。

相对于JdbcDaoSupport中封装的JdbcTemplate更加好用。

1.Dept

  1. package cn.hxex.springcore.jdbc;
  2.  
  3. public class Dept {
  4.  
  5. private Integer deptNo;
  6. private String dName;
  7. private String loc;
  8.  
  9. public Integer getDeptNo() {
  10. return deptNo;
  11. }
  12. public void setDeptNo(Integer deptNo) {
  13. this.deptNo = deptNo;
  14. }
  15. public String getDName() {
  16. return dName;
  17. }
  18. public void setDName(String name) {
  19. dName = name;
  20. }
  21. public String getLoc() {
  22. return loc;
  23. }
  24. public void setLoc(String loc) {
  25. this.loc = loc;
  26. }
  27.  
  28. public String toString() {
  29. StringBuffer buf = new StringBuffer();
  30.  
  31. buf.append( "deptNo:\t" ).append( getDeptNo() ).append( "\t" );
  32. buf.append( "dName:\t" ).append( getDName() ).append( "\t" );
  33. buf.append( "loc:\t" ).append( getLoc() ).append( "\t" );
  34.  
  35. return buf.toString();
  36. }
  37. }

2.IDeptDao

  1. package cn.hxex.springcore.jdbc;
  2.  
  3. import java.util.List;
  4.  
  5. public interface IDeptDao {
  6.  
  7. public List getDepts();
  8.  
  9. public List getDeptsByNo(int deptno);
  10. }

3.DeptNamedDaoImp

  1. package cn.hxex.springcore.jdbc;
  2.  
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. import org.springframework.jdbc.core.RowMapper;
  10. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport;
  11.  
  12. public class DeptNamedDaoImp extends NamedParameterJdbcDaoSupport implements IDeptDao{
  13.  
  14. @Override
  15. public List getDepts() {
  16. String sql = "SELECT deptno, dname, loc FROM dept";
  17. return super.getNamedParameterJdbcTemplate().query( sql, new HashMap(), new DeptRowMapper() );
  18. }
  19.  
  20. @Override
  21. public List getDeptsByNo(final int deptno) {
  22. final String sql = "SELECT deptno, dname, loc FROM dept where deptno=:deptno";
  23. Map<String,Object> paramMap = new HashMap<String,Object>();
  24. paramMap.put("deptno", deptno);
  25. return super.getNamedParameterJdbcTemplate().query( sql, paramMap, new DeptRowMapper() );
  26. }
  27.  
  28. class DeptRowMapper implements RowMapper {
  29.  
  30. public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
  31. Dept dept = new Dept();
  32. dept.setDeptNo( new Integer( rs.getString(1) ) );
  33. dept.setDName( rs.getString( 2 ) );
  34. dept.setLoc( rs.getString( 3 ) );
  35. return dept;
  36. }
  37.  
  38. }
  39.  
  40. }

4.JdbcNamedDaoSupportMain

  1. package cn.hxex.springcore.jdbc;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.beans.factory.BeanFactory;
  6. import org.springframework.beans.factory.xml.XmlBeanFactory;
  7. import org.springframework.core.io.ClassPathResource;
  8.  
  9. public class JdbcNamedDaoSupportMain {
  10.  
  11. public static void main(String[] args) {
  12.  
  13. ClassPathResource resource = new ClassPathResource("cn/hxex/springcore/jdbc/JdbcNamedDaoSupportBeans.xml");
  14. BeanFactory factory = new XmlBeanFactory(resource);
  15.  
  16. IDeptDao dao = (IDeptDao)factory.getBean( "deptDao" );
  17. //List depts = dao.getDepts();
  18. List depts = dao.getDeptsByNo(10);
  19.  
  20. for( int i=0; i<depts.size(); i++ ) {
  21. System.out.println( depts.get( i ) );
  22. }
  23. }
  24. }

5.JdbcNamedDaoSupportBeans.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  3.  
  4. <!-- 初始化数据源 -->
  5. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  6. <property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property>
  7. <property name="url">
  8. <value>jdbc:oracle:thin:@localhost:1521:XE</value>
  9. </property>
  10. <property name="username"><value>jeffrey</value></property>
  11. <property name="password"><value>jeffrey</value></property>
  12. </bean>
  13.  
  14. <bean id="deptDao" class="cn.hxex.springcore.jdbc.DeptNamedDaoImp">
  15. <property name="dataSource" ref="dataSource" />
  16. </bean>
  17. </beans>

spring参考文档:http://docs.spring.io/spring-framework/docs/3.2.0.BUILD-SNAPSHOT/api/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.html

备注:以上部分代码来自陈天河编著的某书

spring 中的两个DaoSupport类的使用对比的更多相关文章

  1. Spring中IoC - 两种ApplicationContext加载Bean的配置

    说明:Spring IoC其实就是在Service的实现中定义了一些以来的策略类,这些策略类不是通过 初始化.Setter.工厂方法来确定的.而是通过一个叫做上下文的(ApplicationConte ...

  2. Spring中使用两种Aware接口自定义获取bean

    在使用spring编程时,常常会遇到想根据bean的名称来获取相应的bean对象,这时候,就可以通过实现BeanFactoryAware来满足需求,代码很简单: @Servicepublic clas ...

  3. Spring中这么重要的AnnotationAwareAspectJAutoProxyCreator类是干嘛的?

    大家好,我是冰河~~ 停更了很久的[Spring注解系列]专题,终于重新更新了,我们还是接着之前的文章继续往下更新.在<[Spring注解驱动开发]二狗子让我给他讲讲@EnableAspectJ ...

  4. spring中的两个数据库事务DataSourceTransactionManager 和 JtaTransactionManager区别

    在spring与数据框架(mybatis或hibernate)容器的配置文件中通常会有 <!-- (事务管理)transaction manager, use JtaTransactionMan ...

  5. Spring中可以复用的工具类&特性记录

    Spring 里有用工具类: GenericTypeResolver 解析泛型类型.核心逻辑还是调用 ResolvableTypeResolvableType 解析泛型类型 BeanWrapper 利 ...

  6. java中比较两个double类型值的大小

    非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型,具体 BigDecimal的详细说明参考jdk开发帮助文档. import java.math.BigDecimal; pu ...

  7. Spring中提供的集合工具类util CollectionUtils

    转自:https://blog.csdn.net/fangwenzheng88/article/details/78457850 CollectionUtils类 /* * Copyright 200 ...

  8. spring笔记--使用springAPI以及自定义类 实现AOP的一个例子

    Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们 ...

  9. spring中BeanFactory和FactoryBean的区别

    共同点: 都是接口 区别: BeanFactory 以Factory结尾,表示它是一个工厂类,用于管理Bean的一个工厂 在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器 ...

随机推荐

  1. oracle 索引失效原因

    转自  http://www.cnblogs.com/orientsun/archive/2012/07/05/2577351.html Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时 ...

  2. CRC校验代码实现

    1.CRC校验简介 CRC就是块数据的计算值,它的全称是“Cyclic Redundancy Check”,中文名是“循环冗余码”.CRC校验是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要 ...

  3. WWF3常用类 <第十一篇>

    一.WorkflowRuntime类 System.Workflow.Runtime.WorkflowRuntime是工作流的运行引擎.WorkflowRuntime在宿主中以自己独立的线程运行,它可 ...

  4. sql语句小练习一

    create database aaa go use aaa go create table student(    sno varchar(3), sname varchar(4) not null ...

  5. Hadoop SecondaryNameNode备份及恢复

    1.同步各个服务器时间 yum install ntp ntpdate ntp.fudan.edu.cn hdfs-site.xml配置 如果没有配置这一项,hadoop默认是0.0.0.0:5009 ...

  6. APUE第一章_课后习题

    /* 未完成的:1.5 不过在下文中已经给出了解答. */ 1.1 在系统上查证,除根目录外,目录.和..是不同的 ans:这个很容易,用vim打开.和..就可以看到区别. 1.2 分析程序清单1-4 ...

  7. poj2503 哈希

    这题目主要是难在字符串处理这块. #include <stdio.h> #include <string.h> #include <stdlib.h> #defin ...

  8. 【Linux】程序内获取文件系统挂载信息

    Linux shell可通过查看/etc/mtab或者/proc/mounts文件来获取当前文件系统挂载信息,示例: 程序内读取/etc/mtab或者/proc/mounts,解析字符串较为繁琐,可以 ...

  9. 发送Ajax请求获取JSON格式数据

    Aspx前端页面: <script type="text/javascript"> $(function () { $.getJSON("Ajax/TestA ...

  10. c# 如何获取项目的根目录

    c# 如何获取项目的根目录 编写程序的时候,经常需要用的项目根目录.自己总结如下 1.取得控制台应用程序的根目录方法     方法1.Environment.CurrentDirectory 取得或设 ...