可以利用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. 学习总结 java连接数据库

    package com.hanqi.test; import java.sql.*; public class jdbcTest { public static void main(String[] ...

  2. 洛谷P2737 [USACO4.1]麦香牛块Beef McNuggets

    P2737 [USACO4.1]麦香牛块Beef McNuggets 13通过 21提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有讨论 题目描 ...

  3. Andriod项目开发实战(1)——如何在Eclipse中的一个包下建新包

    最开始是想将各个类分门别类地存放在不同的包中,所以想在项目源码包中新建几个不同功能的包eg:utils.model.receiver等,最后的结果应该是下图左边这样的:   很明显建立项目后的架构是上 ...

  4. 如何用ASPxTreeView建立三级树(显示及数据绑定)

    示例如图: //设置treeviw默认为第一个菜单打开if (ASPxTreeView1.SelectedNode == null)ASPxTreeView1.SelectedNode = ASPxT ...

  5. PAT1030. Travel Plan

    //晴神模板,dij+dfs,貌似最近几年PAT的的图论大体都这么干的,现在还在套用摸板阶段....估计把这及格图论题题搞完,dij,dfs,并查集就掌握差不多了(模板还差不多)为何bfs能自己干出来 ...

  6. .NET 命名规范 代码示例

    class Person { /// <summary> /// 公有字段.属性 首字母大写 /// </summary> public string FirstName; p ...

  7. c++ boost--------------boost::progress_timer小试。

    //--------------------------------------------------------------------------- #include <vcl.h> ...

  8. Android IOS WebRTC 音视频开发总结(四三)-- 诚信交易案例分享

    本文主要记录一些诚信交易的案例(两个陌生人之间没有合同,没有订金,没有讨价还价,完全靠诚信完成的交易), 特别纪录下来并不是因为金额有多高,而是因为在现在这种社会要完成这样的交易太难,特别是像咨询这种 ...

  9. javaSE第九天

      第九天    50 1. final关键字(掌握)    50 (1)定义:    50 (2)特点:    51 (3)面试相关:    51 A:final修饰的局部变量    51 B:fi ...

  10. Silverlight中本地化的实现(语言切换)

    对于本地化这个功能我个人一直觉得在需求阶段就要确定该项目需不需要实行本地化,这样后面就可以减轻许多工作量,Sl中对本地化功能的支持与ASP.NET 中一样,主要使用CultureInfo类来完成的. ...