Spring使用JDBCTemplate简介

Spring提供了一个强有力的模板类---jdbcTemplate来简化JDBC操作,并且数据源DataSource对象与模板jdbcTemplate对象均可通过Bean的形式定义在配置文件中,充分发挥了依赖注入的威力。

 

案例:使用jdbcTemplate查询所有图书

1.引入jar包

<!-- MySQLjar -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>


 <!--spring jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.2.0.RELEASE</version>
        </dependency>

  

 

2.创建类

 

3.配置xml文件

3.1配置数据源

第一种配法

<!--数据源-->
    <!--
        1.spring默认配置
        2.dbcp注册数据源
        3.c3p0注册数据源
        4.druid注册数据源
    -->
    <!--spring自带数据源-->
   <bean id="dataSources" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName" value="${jdbc.driver}"/>
       <property name="url" value="${jdbc.url}"/>
       <property name="username" value="${jdbc.username}"/>
       <property name="password" value="${jdbc.password}"/>
   </bean>

 

第二种配法

<!--dbcp注册数据源-->
    <bean id="dataSources" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

  

第三种配法

<!--c3p0配置数据源-->
    <bean id="dataSources" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

  

第四种配法

<!--druid配置数据源-->
    <bean id="dataSources" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

  

注:除了第一种配法外,其他几种都需要引入依赖

<!--dbcp-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>

<!--c3p0-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

<!--druid阿里,目前比较流行的-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.29</version>
        </dependency>

  

3.2识别jdbc.properties文件

<!--识别jdbc.properties文件-->
    <!--方式一-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--方式二-->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties"></property>
    </bean>

  

3.3绑定数据源

<!--绑定数据源-->
    <bean id="jdbcTemplates" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSources"/>
    </bean>

  

3.4绑定DAO层实现类

<!--DAO-->
    <bean id="BookDao" class="cn.happy.JDBCTemplate.dao.BookDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplates"/>
    </bean>

 

3.5绑定Service层实现类

<!--service-->
    <bean id="BookService" class="cn.happy.JDBCTemplate.service.BookServiceImpl">
     <!--在serviceImpl中创建对象并封装get set方法-->
<property name="dao" ref="BookDao"/>
</bean>

  

 

4.书写方法

import cn.happy.JDBCTemplate.entity.Book;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * Created by Administrator on 2018/3/13.
 */
//继承JdbcDaoSupport类 public class BookDaoImpl extends JdbcDaoSupport implements IBookDao { public List<Book> getAll() {
     //书写SQL String sql="select * from book";
     //调用JdbcDaoSupport类的JdbcTemplate属性的get方法 List<Book> query = this.getJdbcTemplate().query(sql, new RowMapper<Book>() { public Book mapRow(ResultSet rs, int i) throws SQLException { /* rs 读取器 i 索引 */
          //创建对象 Book book = new Book();
          //渲染数据 book.setBookId(rs.getInt("bookId")); book.setBookName(rs.getString("bookName")); book.setBookPrice(rs.getInt("bookPrice")); return book; } }); return query; } }

  

5.测试类

//JDBCTemplate
    @Test
    public void Spring(){
        ApplicationContext ctx=new ClassPathXmlApplicationContext("JDBCTemplate.xml");
        BookService service=(BookService)ctx.getBean("BookService");
        List<Book> all = service.getAll();
        for (Book item:all) {
            System.out.println(item.getBookName());
        }
    }

  

结果:

 

posted @ 2018-03-14 14:49  徐昌琦  阅读(278)  评论(0编辑  收藏  举报