(轉)JdbcTemplate使用指南

來源:互聯網
上載者:User
Spring JdbcTemplate 使用指南     著作權,轉載請註明出處:http://blog.csdn.net/nomads
PDF 下載: 點此處

前言:

本文指在介紹Spring架構中的JdbcTemplate類的使用方法,涉及基本的Spring反轉控制的使用方法和JDBC的基本概念。目標是使讀者能夠對JdbcTemplate快速地掌握和使用。

 

       準備:

1. Spring的基本概念

       Spring架構核心的思想就是建立一個Java對象的大工廠,使用者只要給工廠一個指令,工廠就能將使用者需要的對象根據設定檔群組裝好返還給使用者。使用者需要做的許多工作則可以寫成簡單的設定檔。

       2. 醜陋的JDBC代碼

Connection con= null;

PreparedStatement pStmt=null;

ResultSet rs = null;

try{          

            con = ods.getConnection();

            String sql = "select * from admin";

            pStmt=con.prepareStatement(sql);           

            rs=pStmt.executeQuery();

            while(rs.next())

            {            }

}

catch(Exception ex) {

try{

         con.rollback();

    }catch(SQLException sqlex){

          sqlex.printStackTrace(System.out);

     }

     ex.printStackTrace();

}finally{

   try{

            rs.close();

            pStmt.close();

            con.close();

   }catch(Exception e){e.printStackTrace();}

}

 

 

       以上是常見的JDBC代碼,簡單的select語句也需要冗長的出錯處理,並且每個函數都不斷地重複同樣的代碼。

 

       3. JdbcTemplate的作用

       JdbcTemplate正是為了減少上述繁瑣的代碼而設計出來的。它是對JDBC的一種封裝,抽象我們常用的一些方法。Simple and Stupid就是它的目標。下面是完成了剛才JDBC代碼同樣功能的JdbcTemplate的代碼:

String sql = "select * from admin";

jdbcTemplate.query(sql,new RowCallbackHandler() {

         public void processRow(ResultSet rs) throws SQLException {   

                }

            } );

 

 

       環境搭建:

1. 資料庫的配置

       本文使用Oracle資料庫,建立表admin:

create table admin (
       ID number(10) primary key,
       NAME varchar2(64),
       PASSWORD varchar2(64)
)

 

 

       2. Spring配置

       JdbcTemplate的使用需要有DataSource的支援,所以在設定檔中,我們首先要配置一個OracleDataSource,然後在將這個DataSource配置到JdbcTemplate裡。接著將JdbcTemplate配置進DAO層,最後將DAO配置進Model層。簡要的關係如下:

 

      

模型層 : User

資料訪問層:UserDAO

JdbcTemplate

OracleDataSource

<!--[if !vml]--><!--[endif]-->

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">

        <property name="URL">

            <value>jdbc:oracle:thin:root/123@localhost:1521/XE</value>

        </property>

    </bean>

   

    <bean id="jdbcTemplate"

class="org.springframework.jdbc.core.JdbcTemplate">

        <property name="dataSource"><ref bean="dataSource"/></property>

    </bean>

 

    <bean id="userDAO" class="DAO.Imp.UserDAOImp">

        <property name="jdbcTemplate">

<ref bean="jdbcTemplate" />

</property>

    </bean>

   

    <bean id="user" class="Model.User">

        <property name="dao"><ref bean="userDAO"/></property>

    </bean>

</beans>

 

       3. 環境配置, 如圖:

      <!--[if !vml]--><!--[endif]-->

 

使用方法:

<!--[if !supportLists]-->1.       <!--[endif]-->尋找

多行查詢:

class UserRowMapper implements RowMapper {

        public Object mapRow(ResultSet rs,int index) throws SQLException

        {

            User u = new User();

            u.setId(rs.getString("ID"));

            u.setName(rs.getString("Name"));

            u.setPassword(rs.getString("Password"));

            return u;

        }

    }

public List select(String where)

    {

        List list;       

        String sql = "select * from admin "+where;       

        list = jdbcTemplate.query(sql,new RowMapperResultReader(new UserRowMapper()));

        return list;

    }

 

 

 

List最終返回的是滿足條件的User隊列。

 

單行查詢:

public User selectById(String id){

    String sql = "select * from admin where id=?";

    final User u = new User();

    final Object[] params = new Object[] {id};

    jdbcTemplate.query(sql, params, new RowCallbackHandler(){

                        public void processRow(ResultSet rs) throws SQLException {

                                 u.setId(rs.getString("ID"));

                                 u.setName(rs.getString("NAME"));

                                 u.setPassword(rs.getString("PASSWORD"));

                        }                     

    });       &n

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.