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.DeptDao

package cn.hxex.springcore.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport; public class DeptDao extends JdbcDaoSupport implements IDeptDao { public List getDepts() {
String sql = "SELECT deptno, dname, loc FROM dept"; return super.getJdbcTemplate().query( sql, new DeptRowMapper() );
} public List getDeptsByNo(final int deptno){
final String sql = "SELECT deptno, dname, loc FROM dept where deptno=?"; return super.getJdbcTemplate().query(new PreparedStatementCreator(){ @Override
public PreparedStatement createPreparedStatement(Connection connection)
throws SQLException {
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, deptno);
return ps;
} }, new RowMapper(){ @Override
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;
} }); } 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.JdbcDaoSupportMain

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 JdbcDaoSupportMain { public static void main(String[] args) { ClassPathResource resource = new ClassPathResource("cn/hxex/springcore/jdbc/JdbcDaoSupportBeans.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.JdbcDaoSupportBeans.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.DeptDao">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>

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

spring使用JdbcDaoSupport中封装的JdbcTemplate进行query的更多相关文章

  1. Spring对Jdbc的封装——JdbcTemplate的使用

    链接:https://pan.baidu.com/s/15luDElW4oeEaP0nvEQ_40w 提取码:i2r1 JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于 ...

  2. JDK、Spring和Mybatis中使用到的设计模式

    一.JDK中的设计模式 (1)结构性模式 1.适配器模式 java.util.Arrays#asList() java.io.InputStreamReader(InputStream) java.i ...

  3. Spring基础——在Spring Config 文件中配置 Bean

    一.基于 XML 的 Bean 的配置——通过全类名(反射) <bean <!-- id: bean 的名称在IOC容器内必须是唯一的若没有指定,则自动的将全限定类名作为 改 bean 的 ...

  4. 控制反转和spring在项目中可以带来的好处

    Spring实例化Bean的三种方式分别是: 1,xml配置使用bean的类构造器 <bean id="personService" class="cn.servi ...

  5. Spring data JPA中使用Specifications动态构建查询

    有时我们在查询某个实体的时候,给定的条件是不固定的,这是我们就需要动态 构建相应的查询语句,在JPA2.0中我们可以通过Criteria接口查询,JPA criteria查询.相比JPQL,其优势是类 ...

  6. spring MVC controller中的方法跳转到另外controller中的某个method的方法

    1. 需求背景     需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 本来以为挺简单的一 ...

  7. 解决Spring在线程中注入为空指针的问题

    在启用线程中使用来jdbcTemplate来查询数据库,引入jdbcTemplate是用Spring  @Autowired注解  方式引入,但是在运行中 jdbcTemplate 总是 空指针 解决 ...

  8. Spring Security框架中踢人下线技术探索

    1.背景 在某次项目的开发中,使用到了Spring Security权限框架进行后端权限开发的权限校验,底层集成Spring Session组件,非常方便的集成Redis进行分布式Session的会话 ...

  9. 在Spring tools suite中使用git 共享项目

    我们都在eclipse 和 myeclipse中使用过cvs 和 svn 版本控制工具进行团队开发,今天我学习了另外一种版本控制工具git,下面我演示如何在Spring tools suite中使用g ...

随机推荐

  1. break 和 continue

    break 和 continue 相同点: 都 用在循环体内,如 switch.for.while.do while的程序块中,用于控制程序循环语句的执行 不同点: break可以离开当前switch ...

  2. 修改oracle用户密码永不过期

    1.查看用户的proifle是哪个,一般是default: sql>SELECT username,PROFILE FROM dba_users; 2.查看指定概要文件(如default)的密码 ...

  3. 学习总结 java 异常

    package com.hanqi.ec; public class Test1 { public static void main(String[] args) { int a = 10 , b = ...

  4. 洛谷P1458 顺序的分数 Ordered Fractions

    P1458 顺序的分数 Ordered Fractions 151通过 203提交 题目提供者该用户不存在 标签USACO 难度普及- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 输入一个 ...

  5. 金额input框控制只能小数点后有两位的有效数字

    <%@include file="/WEB-INF/jsp/common/common.jsp" %> <title>价格录入限定</title> ...

  6. [drp 3]读取Xml配置文件,连接数据库

    导读:之前看一本XML的书,里面说到了对于XML的操作问题,但由于各方面的原因,一直没有总结.这次借着做项目,就总结总结对于XML文件的利用.主要是从配置数据库连接和保存数据这两方面来的.这篇博客介绍 ...

  7. 父窗口调用iframe子窗口方法

    一.父窗口调用iframe子窗口方法 1.HTML语法:<iframe name="myFrame" src="child.html"></i ...

  8. 1Android系统移植与驱动开发概述

    1.Android系统架构分为四层,从下至上依次为Linux内核层,C/C++代码库.Android SDK API.应用程序,要熟悉每一层的内容以及功能: 2.Android移植分为应用移植和系统移 ...

  9. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  10. C++ sstream 中处理字符串

    C++引入ostringstream.istringstream.stringstream这三个类,要使用他们创建对象就必须包含<sstream>这个头文件. istringstream的 ...