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

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

1.Dept

package cn.hxex.springcore.jdbc;

public class Dept {

    private Integer deptNo;
private String dName;
private String loc; public Integer getDeptNo() {
return deptNo;
}
public void setDeptNo(Integer deptNo) {
this.deptNo = deptNo;
}
public String getDName() {
return dName;
}
public void setDName(String name) {
dName = name;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
} public String toString() {
StringBuffer buf = new StringBuffer(); buf.append( "deptNo:\t" ).append( getDeptNo() ).append( "\t" );
buf.append( "dName:\t" ).append( getDName() ).append( "\t" );
buf.append( "loc:\t" ).append( getLoc() ).append( "\t" ); return buf.toString();
}
}

2.IDeptDao

package cn.hxex.springcore.jdbc;

import java.util.List;

public interface IDeptDao {

    public List getDepts();

    public List getDeptsByNo(int deptno);
}

3.DeptNamedDaoImp

package cn.hxex.springcore.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport; public class DeptNamedDaoImp extends NamedParameterJdbcDaoSupport implements IDeptDao{ @Override
public List getDepts() {
String sql = "SELECT deptno, dname, loc FROM dept";
return super.getNamedParameterJdbcTemplate().query( sql, new HashMap(), new DeptRowMapper() );
} @Override
public List getDeptsByNo(final int deptno) {
final String sql = "SELECT deptno, dname, loc FROM dept where deptno=:deptno";
Map<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("deptno", deptno);
return super.getNamedParameterJdbcTemplate().query( sql, paramMap, new DeptRowMapper() );
} class DeptRowMapper implements RowMapper { public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Dept dept = new Dept();
dept.setDeptNo( new Integer( rs.getString(1) ) );
dept.setDName( rs.getString( 2 ) );
dept.setLoc( rs.getString( 3 ) );
return dept;
} } }

4.JdbcNamedDaoSupportMain

package cn.hxex.springcore.jdbc;

import java.util.List;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource; public class JdbcNamedDaoSupportMain { public static void main(String[] args) { ClassPathResource resource = new ClassPathResource("cn/hxex/springcore/jdbc/JdbcNamedDaoSupportBeans.xml");
BeanFactory factory = new XmlBeanFactory(resource); IDeptDao dao = (IDeptDao)factory.getBean( "deptDao" );
//List depts = dao.getDepts();
List depts = dao.getDeptsByNo(10); for( int i=0; i<depts.size(); i++ ) {
System.out.println( depts.get( i ) );
}
}
}

5.JdbcNamedDaoSupportBeans.xml

<?xml version="1.0" encoding="UTF-8"?>
<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"> <!-- 初始化数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:XE</value>
</property>
<property name="username"><value>jeffrey</value></property>
<property name="password"><value>jeffrey</value></property>
</bean> <bean id="deptDao" class="cn.hxex.springcore.jdbc.DeptNamedDaoImp">
<property name="dataSource" ref="dataSource" />
</bean>
</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. linux取某个字段排重

    排重统计 cat a.txt | awk -F ';' '{print $2}' | sort -u | wc -l

  2. 查看Eclipse版本号的方法

    查看Eclipse版本号的方法如下所示: 1:假设Eclipse已打开Eclipse的菜单栏: Help-->About Eclipse弹出框中会显示一排logo,点击eclipse的那个log ...

  3. noip2008 火柴棒等式

    P1149 火柴棒等式 1.9K通过 3.7K提交 题目提供者该用户不存在 标签搜索/枚举模拟2008NOIp提高组 难度普及- 提交该题 讨论 题解 记录   题目描述 给你n根火柴棍,你可以拼出多 ...

  4. 详解Ossim 4.3控制台

    在Ossim 4.2以后的发行版中增加了控制台功能下面加以详细说明,当Ossim 启动之后,在控制台以root身份登录系统后会执行ossim-setup脚本,然后显示如下图1所示,了解这些功能,以及操 ...

  5. MongoDB 1: NoSQL 和 SQL的区别

    导读:本篇博客,主要是结合自己在项目中的使用,简单的阐述一下NoSQL和SQL的区别.那么,根据自己的应用,NoSQL这边,选择的是MongoDB(Redis虽然也是,但属于内存存储,这里不予说明). ...

  6. CI系统

  7. @media screen解决移动web开发的多分辨率问题

    当今移动设备的发展已经越来越迅速,移动web开发的需求也越来越多多.许多大平台.大门户都纷纷推出了自己的移动web版网站. 随着移动设备飞速的发展,移动产品的屏幕规格越来越多.从几年前的320×240 ...

  8. DropDownList的用法

    DropDownList是一个下拉列表菜单,平时我们也会经常用到,下面就来看看如何绑定值 1>     静态添加,就是说在值都很明确的情况下 ListItem list1 = new ListI ...

  9. Android IOS WebRTC 音视频开发总结(六三)-- 2016国内IM云服务行业分析

    本文主要国内IM云服务行业分析,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 谈到IM我们最先想到的是qq和微信 ...

  10. 在Apache下发布ASP.NET程序

    为什么要在apache下发布ASP.NET,看这篇文章您一定有自己的原因. 我是因为XP系统里面同时装IIS 和 AppServer会有问题. 步骤: 1.环境搭建,这个不废话,我安装的是.NET2. ...