- 浏览: 845192 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
spring的Dao和JDBC
DAO(Data Access Object),我们开发的时候通常采用一接口一实现的方式。Dao所抛出的异常在spring中都是DataAccessException的子类,并且DataAccessException是RuntimeException,也就是说他属于unchecked Exception。
1、 DataSource注入:对于不同的数据连接来源需求,spring提供了javax.sql.DataSource注入,要更换数据源只要在bean的定义文件中修改,不需要修改任何一行程序代码
写法如下:
此处需要注意的是,一定要引入相关的数据库驱动jar包。并在配置文件中进行dao的数据源注入。 2、 置换DataSource数据源 置换数据源并不需要修改源代码程序,只需要更改下配置文件就ok了,同时记得相关jar包引入。这里我们想置换当前数据源连接策略为dbcp。 引入的jar为:commons-dbcp.jar,commons-pool.jar 写法如下:
大家可以看到只是bean的class改变了!! 3、 对jndi数据源的支持 如果你要设置jndi数据源,请引入相关的jar(spring-context.jar),同时在tomcat应用服务器上配置好jndi的数据源,在配置文件中引用 4、 Spring的jdbc封装功能(Template) Spring提供的jdbc的封装等功能是可以独立于spring来使用,除了JdbcTemplate类之外,spring还提供了其他的Template类,例如:hibernate,jdo,ibatis等的Template实现。这些都是线程安全的。 1)、JdbcTemplate的使用 我们将改写InsertUser方法,使用jdbcTemplate技术 核心代码如下: JdbcTemplate tmp = new JdbcTemplate(dataSource); tmp.execute("insert into tbl_user (name,pwd) values ('"+user.getName()+"','"+user.getPwd()+"')"); 2)、jdbcTemplate的查询 通过调用queryForInt方法来进行个数查询 例如: int total = tmp.queryForInt("select count(*) from tbl_user"); 通过调用queryForObject方法来对查询出的数据进行对象封装 例如: User user = (User) tmp.queryForObject("select * from tbl_user where id="+id, new UserRowMapper()); 通过调用query方法来对查询出的列表数据进行对象封装 例如: List<User> list= (List<User>) tmp.query("select * from tbl_user", new UserRowMapper()); 进行查询出的数据进行对象封装的关键点是封装类的实现:实现RowMapper接口 封装对象的写法如下: 5、 以对象的方式操作 就JdbcTemplate上的各种方法来看,它封装了JDBC的处理细节,让您不需要接触底层的数据库技术,然而JdbcTemplate的各种方法仍然需要熟悉如何使用sql语法,如果想让程序人员不用接触到sql的于案发或者是重用某些sql,在spring中,可以进一步建立可重用的操作对象,建立之后在数据库设计时,将设计完成的可重用对象给开发人员使用,他们就无须接触到sql的细节了。 Spring提供了org.springframework.jdbc.object包,只要继承它下边的已经提供的对象实例,就可以完成以对象为导向的数据库操作。这些类都被设计成线程安全的。 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/spring"></property>
<property name="username" value="root"></property>
<property name="password" value="spring_framework"></property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/spring"></property>
<property name="username" value="root"></property>
<property name="password" value="spring_framework"></property>
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/demo"></property>
</bean>
public class UserRowMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(new Integer(rs.getInt("id")));
user.setName(rs.getString("name"));
user.setPwd(rs.getString("pwd"));
return user;
}
}
1)、继承sqlFunction
public class UserFunction extends SqlFunction {
public UserFunction(DataSource dataSource){
super(dataSource,"select count(*) from tbl_user");
compile();
}
}
调用:
UserFunction uf = new UserFunction(dataSource);
total =uf.run();
2)、继承sqlUpdate
public class UserUpdate extends SqlUpdate {
public UserUpdate(DataSource dataSource){
super(dataSource,"insert into tbl_user (name,pwd) values (?,?)");
int[] types = {java.sql.Types.VARCHAR,java.sql.Types.VARCHAR};
setTypes(types);
compile();
}
}
调用:
UserUpdate uu = new UserUpdate(dataSource);
uu.update(new Object[]{user.getName(),user.getPwd()});
3)、继承MappingSqlQuery
public class UserQuery extends MappingSqlQuery {
public UserQuery(DataSource dataSource){
super(dataSource,"select * from tbl_user");
compile();
}
@Override
protected Object mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(new Integer(rs.getInt("id")));
user.setName(rs.getString("name"));
user.setPwd(rs.getString("pwd"));
return user;
}
}
调用:
UserQuery uq = new UserQuery(dataSource);
List<User> list=uq.execute();
6、 Spring2.0的NamedParameterJdbcTemplate类
在编写jdbc的sql陈述时就不必使用占位符’?’了,而是使用实际的命名参数来保留sql中会变动的数据部分。
例如:
String sql = “select * from tbl_user where id =:userId”;
SqlParameterSource params = new MapSqlParameterSource(“userId”,id);
NamedParameterJdbcTemplate template = new NamedParameterJdbcTemplate(dataSource);
List rows = template.queryForList(sql,params);
7、 Spring2.0的SimpleJdbcTemplate
如果使用的是jdk1.5以上的版本,可以利用这个函数所提供的泛型的功能来查询数据。
发表评论
-
配置DAO代理 一个小错误
2010-09-01 16:24 1864在配置DAO代理的时候 <!-- 定义DAO代理 ... -
Spring依赖注入
2010-05-26 16:48 1027所谓依赖注入,是指在 ... -
spring 事务
2010-05-20 21:16 785声明式事务管理(在配置时,它是通用的,只需要改变 <ao ... -
springframework【13】
2010-05-20 20:34 895spring的事务管理 Spring提供了编程性事务管 ... -
springframework【11】
2010-05-20 20:24 808AOP之aop标签的支持 spring2.0提供了基于 ... -
springframework【10】
2010-05-20 20:20 983Spring的Autoproxing (自动代理,注意必须使用 ... -
springframework【9】
2010-05-20 20:18 1067AOP之Pointcut、Advisor 上篇的所 ... -
springframework【8】
2010-05-20 20:16 1027Spring的AdvicesAdvices实现了Aspect的 ... -
springframework【7】
2010-05-20 20:13 899AOP的相关术语以及实现方式介绍 先介绍下使用spri ... -
springframe【6】
2010-05-20 20:11 938AOP之动态代理 AOP的原理就是动态代理,上一片介绍 ... -
springframework【5】
2010-05-20 20:08 910spring的AOP是基于代理的。java的事务控制是基于代理 ... -
springframework【4】
2010-05-20 20:05 1058这里说的国际化不是简 ... -
springframework【3】
2010-05-20 20:02 942Bean的依赖设置与集合对象的处理 Bean的依赖设 ... -
springframework【2】
2010-05-20 19:43 922Bean的基本管理 Bean的基本管理 1、Be ... -
springframework【1】
2010-05-20 19:27 940第一个spring程序 在这里我们使用xmlsche ...
相关推荐
Spring Framework。 官网 Spring Framework API。 Spring Framework 开发文档。
标题中的“maven仓库中org下的springframework”指的是在Maven的本地或远程仓库中,位于`org`组织下的`springframework`项目。Spring Framework是Java开发中的一个核心框架,由Pivotal Software公司维护,它为构建...
"Spring Framework 4 参考文档中文版" 以下是 Spring Framework 4 参考文档中文版的知识点总结: 一、Spring Framework 概览 * Spring Framework 是一个轻量级的解决方案,是一站式构建企业级应用的一种选择。 * ...
《Spring框架核心模块——org.springframework.core.jar深度解析》 在Java世界中,Spring框架以其卓越的灵活性、可扩展性和模块化设计,成为了企业级应用开发的首选。其中,`org.springframework.core.jar`是Spring...
spring framework 中文参考手册
Spring Framework 是一个广泛使用的开源Java应用框架,特别适用于企业级应用程序开发。它的最新版本v6.1.4为我们带来了许多新特性和改进,使得开发者能够更高效、更灵活地构建可维护的、高性能的应用程序。这个...
org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包,org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包org.springframework.flex-1.0.3.RELEASE.jar.zip用于JAR包org.springframework.flex-1.0.3....
Spring Framework API文档。Spring是什么呢?首先它是一个开源的项目,而且非常活跃;它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据...
org.springframework.aop-3.0.4.RELEASE.jar org.springframework.asm-3.0.4.RELEASE.jar org.springframework.aspects-3.0.4.RELEASE.jar org.springframework.beans-3.0.4.RELEASE.jar org.springframework....
### Spring Framework 简介 #### 一、Spring Framework 的独特之处 在众多J2EE框架中,Spring Framework 自2003年发布以来一直备受瞩目。与其他框架相比,Spring Framework 的独特之处在于: 1. **专注于管理业务...
Spring Framework 是一个全面的Java应用开发框架,以其模块化、灵活的设计而闻名,它极大地简化了企业级Java应用的开发工作。Spring Framework v5.3.32是该框架的一个特定版本,它包含了修复的问题、性能优化以及...
Spring Framework 是Java开发中的核心框架,它以其强大的功能和易用性成为了许多开发者首选的工具。Spring Framework 6.0.8-SNAPSHOT 的中文文档是针对这一最新版本的详尽指南,旨在解决中文互联网上关于Spring框架...
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
org\springframework\aop org\springframework\beans org\springframework\cache org\springframework\context org\springframework\core org\springframework\dao org\springframework\ejb org\spring...
Spring Framework 5.1.0源码 The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key ...
《Spring核心模块详解:org.springframework.core_3.1.1.RELEASE.jar》 在Java开发领域,Spring框架无疑是最重要的框架之一,它以其强大的依赖注入、面向切面编程以及丰富的功能扩展,深受开发者喜爱。其中,`org....
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。 该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-...
org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE.jar org.springframework....
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。 该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-...
Spring Framework 4.x Reference Documentation 中文翻译 Chinese translation of the Spring Framework 4.x Reference Documentation ...