乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Spring:JdbcTemplate使用指南

       小朋 2009-02-18

      前言:

      本文指在介紹Spring框架中的JdbcTemplate類的使用方法,涉及基本的Spring反轉(zhuǎn)控制的使用方法和JDBC的基本概念。目標(biāo)是使讀者能夠?qū)?/span>JdbcTemplate快速地掌握和使用。

       

             準(zhǔn)備:

      1. Spring的基本概念

             Spring框架核心的思想就是建立一個Java對象的大工廠,用戶只要給工廠一個指令,工廠就能將用戶需要的對象根據(jù)配置文件組裝好返還給用戶。用戶需要做的許多工作則可以寫成簡單的配置文件。

             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語句也需要冗長的出錯處理,并且每個函數(shù)都不斷地重復(fù)同樣的代碼。

       

             3. JdbcTemplate的作用

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

      String sql = "select * from admin";

      jdbcTemplate.query(sql,new RowCallbackHandler() {

               public void processRow(ResultSet rs) throws SQLException {   

                      }

                  } );

       

       

             環(huán)境搭建:

      1. 數(shù)據(jù)庫的配置

             本文使用Oracle數(shù)據(jù)庫,新建表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層。簡要的關(guān)系如下:

       

            

      模型層 : User

      數(shù)據(jù)訪問層:UserDAO

      JdbcTemplate

      OracleDataSource

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

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

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

          "http://www./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. 環(huán)境配置, 如圖:

             <!--[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"));

                              }                     

          });         

          return u;

      }

       

       

       

      <!--[if !supportLists]-->2.       <!--[endif]-->插入

      public void insert(User u)

      {

           String sql = "insert into admin (ID,NAME,PASSWORD) values (admin_id_seq.nextval,?,?)";

           Object[] params = new Object[] {

                                                      u.getName(),

                                                      u.getPassword() };

           jdbcTemplate.update(sql,params);

       }

       

      admin_id_seq.nextvalOracle設(shè)置好的序列,問號“?”被params里的數(shù)據(jù)依次替代,最終執(zhí)行sql

       

      <!--[if !supportLists]-->3.       <!--[endif]-->修改

      非常簡單:

      public void update(String how)

      {

              jdbcTemplate.update(how);

          }

       

       

      源代碼:

      User.class:

      package Model;

       

      import java.util.List;

      import DAO.UserDAO;

      /**

       *  Model

       *

       *

       * @author 李嘉陵

       * @since 2006-4-30 12:10:30

       * @version 0.10a

       **/

       

      public class User {

          private String name;

          private String id;

          private String password;

          private UserDAO dao;

         

          public User()

          {

            

          }

         

          public User(String name, String password)

          {

             this.name = name;

             this.password = password;

          }

         

          public void setDao(UserDAO dao)

          {

              this.dao = dao;

          }

          public String getId() {

              return id;

          }

         

          public void setId(String id) {

              this.id = id;

          }

         

          public String getName() {

              return name;

          }

         

          public void setName(String name) {

              this.name = name;

          }

         

          public String getPassword() {

              return password;

          }

         

          public void setPassword(String password) {

              this.password = password;

          }

         

          public void getInfo(String id)

          {

              List list = dao.select("where id="+id);

              User u = (User) list.get(0);

             

              this.id=id;

              this.name = u.getName();

              this.password = u.getPassword();

             

          }

         

          public void insert()

          {

              dao.insert(this);

          }

         

          public void update(String how)

          {

              dao.update(how);

          }

         

          public void update()

          {

              dao.update("update admin set name='"+name+"', password='"+password+"' where id="+id);

          }

         

          public List selectWithTemp(String where)

          {

              return dao.select(where);

          }

         

          public void selectWithTemp()

          {

              dao.selectWithTemp();

          }

         

          public User selectById(String id)

          {

             return dao.selectById(id);

          }

          

          public void insertUsers(List users)

          {

             dao.insertUsers(users);

          }

      }

       

       

      UserDAO.class :

      package DAO;

       

      import java.util.List;

       

      import Model.User;

       

      /**

       * DAO層接口

       *

       *

       * @author 李嘉陵

       * @since 2006-4-30 8:40:56

       * @version 0.10a

       **/

       

      public interface UserDAO {

          public void select();

          public void test();

          public void selectWithTemp();

          public List select(String where);

          public void update(String how);

          public void insert(User u);

          public User selectById(String id);

          public int[] insertUsers(final List users);

         

      }

       

      UserDAOImp.class:

      package DAO.Imp;

       

       

      import java.sql.PreparedStatement;

      import java.sql.ResultSet;

      import java.sql.SQLException;

      import java.util.List;

       

      import org.springframework.jdbc.core.BatchPreparedStatementSetter;

      import org.springframework.jdbc.core.JdbcTemplate;

      import org.springframework.jdbc.core.RowCallbackHandler;

      import org.springframework.jdbc.core.RowMapper;

      import org.springframework.jdbc.core.RowMapperResultReader;

       

      import DAO.UserDAO;

      import Model.User;

       

      /**

       *  DAO層的實現(xiàn)

       *

       *

       * @author 李嘉陵

       * @since 2006-4-30 8:41:26

       * @version 0.10a

       **/

       

      public class UserDAOImp implements UserDAO{

         

          private JdbcTemplate jdbcTemplate;

         

          public void setJdbcTemplate(JdbcTemplate jdbcTemplate)

          {

              this.jdbcTemplate = jdbcTemplate;

          }

         

          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 void selectWithTemp()

          {

              String sql = "select * from admin";

                    

              jdbcTemplate.query(sql,new RowCallbackHandler() {

                      public void processRow(ResultSet rs) throws SQLException {

                      System.out.println("ID: "+rs.getString("ID")+"   Name: "+rs.getString("name"));

                      }

                  } );

       

          }

         

          public List select(String where)

          {

              List list;

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

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

              return list;

          }

         

          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"));

                               }

             });

            

             return u;

          }

         

          public void update(String how)

          {

              String sql = how;

              jdbcTemplate.update(sql);

          }

         

          public void insert(User u)

          {

              String sql = "insert into admin (ID,NAME,PASSWORD) values (admin_id_seq.nextval,?,?)";

              Object[] params = new Object[] {

                                                         u.getName(),

                                                         u.getPassword()};

              jdbcTemplate.update(sql,params);

          }

        

      }

       

       

      UserAction.class:

      //測試類

      public class UserAction {

          public static void main(String[] args)

          {

              Resource resource=new ClassPathResource("beans.xml");

              BeanFactory factory = new XmlBeanFactory(resource);       

              User user = (User) factory.getBean("user");   

             

              user.selectWithTemp();

          }

      }

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約