【Spring實戰】—— 14 傳統的JDBC實現的DAO插入和讀取


從這篇開始學習Spring的JDBC,為了了解Spring對於JDBC的作用,先通過JDBC傳統的流程,實現一個數據庫的插入讀取

  從這篇你可以了解到:

  1 傳統的JDBC插入和讀取的過程。

  2 如何通過JDBC連接Mysql

  如何通過JDBC連接mysql

  首先看一下下面這張圖:

  應用程序需要通過mysql的驅動程序,才能與數據連接。

  驅動程序下載地址:mysql-connector-java-5.1.13-bin.jar

  在設計程序的時候,應該采用接口編程的方式,這樣能夠減小數據操作與應用業務邏輯代碼之間的耦合

 

  JDBC插入和讀取過程

  使用傳統的JDBC需要經過如下的幾個步驟:

  1 加載驅動程序

Class.forName("com.mysql.jdbc.Driver");

  2 創建連接

Connection conn = (Connection) DriverManager.getConnection(url, userName,passwrod);

  3 創建執行計划

PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement("select * from persons");

  4 執行查詢獲取結果

            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println("id : " + rs.getString(1) + " name : "+ rs.getString(2) + " age : " + rs.getInt(3));
            }

  5 關閉查詢結果

            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

  6 關閉執行計划

            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

  7 關閉連接

            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

 

  按照上面的幾個步驟,來看一下實現的代碼:

  首先是接口部分:

package com.spring.chap5.dao;

public interface OldJdbc {
    /**
     * 插入數據
     */
    public void insertPerson(String id,String name,int age);
    /**
     * 查詢所有結果
     */
    public void findAllPerson();
}

  然后是實現部分

package com.spring.chap5.dao;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class OldJdbcImpl implements OldJdbc{
    
    String driver = "com.mysql.jdbc.Driver";
    String userName = "root";
    String passwrod = "123qwe";
    String url = "jdbc:mysql://localhost:3306/test";

    public void insertPerson(String id,String name,int age) {
        try {
            Class.forName(driver);
            Connection conn = (Connection) DriverManager.getConnection(url, userName,passwrod);
            PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement("insert into persons (id,name,age) values (?,?,?)");
            pstmt.setString(1, id);
            pstmt.setString(2, name);
            pstmt.setInt(3, age);
            pstmt.executeUpdate();
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void findAllPerson() {
        try {
            Class.forName(driver);
            Connection conn = (Connection) DriverManager.getConnection(url, userName,passwrod);
            PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement("select * from persons");
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println("id : " + rs.getString(1) + " name : "+ rs.getString(2) + " age : " + rs.getInt(3));
            }
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  可以看到,光是兩個簡單的插入和查詢,就有如此多的代碼,而且大部分都是相同的過程。因此spring的模板,就派上用場了。

  測試類如下:

public class test {
    public static void main(String[] args) {
        OldJdbc oldjdbc = new OldJdbcImpl();
        oldjdbc.insertPerson("001", "xingoo1", 20);
        oldjdbc.insertPerson("002", "xingoo2", 20);
        oldjdbc.findAllPerson();
    }
}

  

  另外還需要一個很重要的部分,就是sql語句:

/*
SQLyog v4.05
Host - 4.1.11-nt : Database - test
*********************************************************************
Server version : 4.1.11-nt
*/


create database if not exists `test`;

USE `test`;

/*Table structure for table `test`.`persons` */

drop table if exists `test`.`persons`;

CREATE TABLE `persons` (
  `id` varchar(20) NOT NULL default '',
  `name` varchar(20) default NULL,
  `age` int(10) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*Data for the table `test`.`persons` */

insert into `test`.`persons` values ('001','xingoo1',20),('002','xingoo2',20);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM