spring 中的两个DaoSupport类的使用对比
可以利用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类的使用对比的更多相关文章
- Spring中IoC - 两种ApplicationContext加载Bean的配置
说明:Spring IoC其实就是在Service的实现中定义了一些以来的策略类,这些策略类不是通过 初始化.Setter.工厂方法来确定的.而是通过一个叫做上下文的(ApplicationConte ...
- Spring中使用两种Aware接口自定义获取bean
在使用spring编程时,常常会遇到想根据bean的名称来获取相应的bean对象,这时候,就可以通过实现BeanFactoryAware来满足需求,代码很简单: @Servicepublic clas ...
- Spring中这么重要的AnnotationAwareAspectJAutoProxyCreator类是干嘛的?
大家好,我是冰河~~ 停更了很久的[Spring注解系列]专题,终于重新更新了,我们还是接着之前的文章继续往下更新.在<[Spring注解驱动开发]二狗子让我给他讲讲@EnableAspectJ ...
- spring中的两个数据库事务DataSourceTransactionManager 和 JtaTransactionManager区别
在spring与数据框架(mybatis或hibernate)容器的配置文件中通常会有 <!-- (事务管理)transaction manager, use JtaTransactionMan ...
- Spring中可以复用的工具类&特性记录
Spring 里有用工具类: GenericTypeResolver 解析泛型类型.核心逻辑还是调用 ResolvableTypeResolvableType 解析泛型类型 BeanWrapper 利 ...
- java中比较两个double类型值的大小
非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型,具体 BigDecimal的详细说明参考jdk开发帮助文档. import java.math.BigDecimal; pu ...
- Spring中提供的集合工具类util CollectionUtils
转自:https://blog.csdn.net/fangwenzheng88/article/details/78457850 CollectionUtils类 /* * Copyright 200 ...
- spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们 ...
- spring中BeanFactory和FactoryBean的区别
共同点: 都是接口 区别: BeanFactory 以Factory结尾,表示它是一个工厂类,用于管理Bean的一个工厂 在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器 ...
随机推荐
- oracle 索引失效原因
转自 http://www.cnblogs.com/orientsun/archive/2012/07/05/2577351.html Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时 ...
- CRC校验代码实现
1.CRC校验简介 CRC就是块数据的计算值,它的全称是“Cyclic Redundancy Check”,中文名是“循环冗余码”.CRC校验是数据通讯中最常采用的校验方式.在嵌入式软件开发中,经常要 ...
- WWF3常用类 <第十一篇>
一.WorkflowRuntime类 System.Workflow.Runtime.WorkflowRuntime是工作流的运行引擎.WorkflowRuntime在宿主中以自己独立的线程运行,它可 ...
- sql语句小练习一
create database aaa go use aaa go create table student( sno varchar(3), sname varchar(4) not null ...
- Hadoop SecondaryNameNode备份及恢复
1.同步各个服务器时间 yum install ntp ntpdate ntp.fudan.edu.cn hdfs-site.xml配置 如果没有配置这一项,hadoop默认是0.0.0.0:5009 ...
- APUE第一章_课后习题
/* 未完成的:1.5 不过在下文中已经给出了解答. */ 1.1 在系统上查证,除根目录外,目录.和..是不同的 ans:这个很容易,用vim打开.和..就可以看到区别. 1.2 分析程序清单1-4 ...
- poj2503 哈希
这题目主要是难在字符串处理这块. #include <stdio.h> #include <string.h> #include <stdlib.h> #defin ...
- 【Linux】程序内获取文件系统挂载信息
Linux shell可通过查看/etc/mtab或者/proc/mounts文件来获取当前文件系统挂载信息,示例: 程序内读取/etc/mtab或者/proc/mounts,解析字符串较为繁琐,可以 ...
- 发送Ajax请求获取JSON格式数据
Aspx前端页面: <script type="text/javascript"> $(function () { $.getJSON("Ajax/TestA ...
- c# 如何获取项目的根目录
c# 如何获取项目的根目录 编写程序的时候,经常需要用的项目根目录.自己总结如下 1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设 ...