`

springframework【12】

阅读更多

spring的Dao和JDBC

 

DAOData Access Object),我们开发的时候通常采用一接口一实现的方式。Dao所抛出的异常在spring中都是DataAccessException的子类,并且DataAccessExceptionRuntimeException,也就是说他属于unchecked Exception

1、  DataSource注入:对于不同的数据连接来源需求,spring提供了javax.sql.DataSource注入,要更换数据源只要在bean的定义文件中修改,不需要修改任何一行程序代码

写法如下:

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

 

此处需要注意的是,一定要引入相关的数据库驱动jar包。并在配置文件中进行dao的数据源注入。

2、  置换DataSource数据源

置换数据源并不需要修改源代码程序,只需要更改下配置文件就ok了,同时记得相关jar包引入。这里我们想置换当前数据源连接策略为dbcp

引入的jar为:commons-dbcp.jar,commons-pool.jar

写法如下:

 

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

 

 

大家可以看到只是beanclass改变了!!

3、  jndi数据源的支持

 如果你要设置jndi数据源,请引入相关的jarspring-context.jar,同时在tomcat应用服务器上配置好jndi的数据源,在配置文件中引用

 

 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName" value="jdbc/demo"></property>

</bean>

 

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接口

        封装对象的写法如下:

 

 

 

 

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;

    }

}

 5、  以对象的方式操作

就JdbcTemplate上的各种方法来看,它封装了JDBC的处理细节,让您不需要接触底层的数据库技术,然而JdbcTemplate的各种方法仍然需要熟悉如何使用sql语法,如果想让程序人员不用接触到sql的于案发或者是重用某些sql,在spring中,可以进一步建立可重用的操作对象,建立之后在数据库设计时,将设计完成的可重用对象给开发人员使用,他们就无须接触到sql的细节了。

  Spring提供了org.springframework.jdbc.object包,只要继承它下边的已经提供的对象实例,就可以完成以对象为导向的数据库操作。这些类都被设计成线程安全的。

 

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以上的版本,可以利用这个函数所提供的泛型的功能来查询数据。

 

分享到:
评论

相关推荐

    Spring Framework API(Spring Framework 开发文档).CHM

    Spring Framework。 官网 Spring Framework API。 Spring Framework 开发文档。

    maven仓库中org下的springframework

    标题中的“maven仓库中org下的springframework”指的是在Maven的本地或远程仓库中,位于`org`组织下的`springframework`项目。Spring Framework是Java开发中的一个核心框架,由Pivotal Software公司维护,它为构建...

    Spring Framework 4 参考文档中文版.docx

    "Spring Framework 4 参考文档中文版" 以下是 Spring Framework 4 参考文档中文版的知识点总结: 一、Spring Framework 概览 * Spring Framework 是一个轻量级的解决方案,是一站式构建企业级应用的一种选择。 * ...

    org.springframework.core.jar

    《Spring框架核心模块——org.springframework.core.jar深度解析》 在Java世界中,Spring框架以其卓越的灵活性、可扩展性和模块化设计,成为了企业级应用开发的首选。其中,`org.springframework.core.jar`是Spring...

    spring framework 中文参考手册

    spring framework 中文参考手册

    Spring Framework v6.1.4.zip

    Spring Framework 是一个广泛使用的开源Java应用框架,特别适用于企业级应用程序开发。它的最新版本v6.1.4为我们带来了许多新特性和改进,使得开发者能够更高效、更灵活地构建可维护的、高性能的应用程序。这个...

    org.springframework.flex-1.0.3.RELEASE.jar.zip

    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 Framework API文档。Spring是什么呢?首先它是一个开源的项目,而且非常活跃;它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据...

    org.spring-framework-3.0.4. 所有jar

    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 简介 #### 一、Spring Framework 的独特之处 在众多J2EE框架中,Spring Framework 自2003年发布以来一直备受瞩目。与其他框架相比,Spring Framework 的独特之处在于: 1. **专注于管理业务...

    Spring Framework v5.3.32.zip

    Spring Framework 是一个全面的Java应用开发框架,以其模块化、灵活的设计而闻名,它极大地简化了企业级Java应用的开发工作。Spring Framework v5.3.32是该框架的一个特定版本,它包含了修复的问题、性能优化以及...

    Spring Framework 6 中文文档

    Spring Framework 是Java开发中的核心框架,它以其强大的功能和易用性成为了许多开发者首选的工具。Spring Framework 6.0.8-SNAPSHOT 的中文文档是针对这一最新版本的详尽指南,旨在解决中文互联网上关于Spring框架...

    Getting started with Spring Framework: covers Spring 5(epub)

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

    spring-framework-2.0.2

    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源码

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

    org.springframework.core_3.1.1.RELEASE.jar

    《Spring核心模块详解:org.springframework.core_3.1.1.RELEASE.jar》 在Java开发领域,Spring框架无疑是最重要的框架之一,它以其强大的依赖注入、面向切面编程以及丰富的功能扩展,深受开发者喜爱。其中,`org....

    SpringFramework_v5.0.7.zip

    Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。 该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-...

    spring3.0.5 所有jar文件

    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 v5.0.11

    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 中文翻译

    Spring Framework 4.x Reference Documentation 中文翻译 Chinese translation of the Spring Framework 4.x Reference Documentation ...

Global site tag (gtag.js) - Google Analytics