JDBC初識以及使用

 

JDBCjava

1.  Jdbc概述

問題:實際開發中,不可能用工具或者命令行操做數據庫,數據庫表中的數據最終要使用Java程序來操做,那麼Java中如何操做數據庫中的數據呢?mysql

 

Java語言中,有一個專門鏈接數據庫的規範(JDBC),專門負責鏈接數據庫進行數據操做的規範sql

 

JDBC只是SUN編寫的一堆接口(規範的體現),SUN公司本身並無實現數據庫

 

 

問題 爲何SUN只定義一個JDBC規範,而不實現呢?api

 

由於市面上的數據庫不少,每一個數據庫內部接口不會向外暴露,並且即使是暴露讓SUN去實現,市面上不少數據庫所有要SUN來實現不現實瀏覽器

 

實際中哪一個數據庫須要支持JAVA語言,就須要本身實現JavaJDBC規範,由於實現了JDBC不少接口,那麼就會有不少實現類,而不少實現類在java中會使用一個專門的包封裝起來,叫作jar(在JDBC中叫作驅動包),各大數據庫產商實現JDBC規範之後都會把他們jar包放在官網上以供開發者下載使用架構

jdbc:dom

是一種用於執行SQL語句的Java API,能夠爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基工具

JDBC規範對應的api性能

  建立普通java項目

  在項目下面新建一個lib目錄

 MySQL驅動包拷貝到項目中並添加依賴

  獲取數據庫鏈接對象

1.  建立表-DDL操做

在其餘操做之間先要把數據庫表要建立出來

public static void main(String[] args) throws Exception {

String sql = "create table t_student (id int primary key auto_increment,name varchar(50),age int)";

//賈璉欲執事

//1,加載註冊驅動

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

//2,獲取數據庫鏈接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");

//3,建立語句對象(用於執行SQL語句的對象)

Statement st = conn.createStatement();

//4, 執行SQL語句

//int rows = st.executeUpdate(String sql);執行DDL和DML語句,放回的是受影響的行數

//ResultSet res = st.executeQuery(String sql);執行DQL查詢語句,返回的結果集對象

st.executeUpdate(sql);

//5,釋放資源(先開後關)

st.close();

conn.close();

}

  查詢操做的分析

 

 

 預編譯語句對象PreparedStatment

問題 咱們有了Statment對象能夠執行SQL,爲何還要使用PreparedStatment

 

優點

  1. SQL語句結構清晰,參數的設置和SQL語句分離
  2. 性能更高
  3. 防止SQL注入

 

 

Statement: 表示靜態SQL語句對象.

PreparedStatement:Statement的子接口,表示預編譯SQL語句對象. 經過佔位符(?)來拼SQL.  

 

建立PreparedStatement

建立語句對象 Statment

 

 執行SQL語句的方法

Statment

在執行SQL語句的時候迴帶上SQL語句

 

 PreparedStatement 

在執行SQL語句的方法中不須要設置SQL語句

 

  設置站位參數的值

void  setXxx(int parameterIndex,Xxx value):用於設置佔位符參數,

       parameterIndex:第幾個問號. 注意:1開始.

       value:設置的真實值.

Xxx:表示數據類型.String/int/long/Double/Date

 

2.  開發的分層設計-三層架構

  DAO層設計

 

實際開發中,JavaWeb開發代碼通常分爲三層,分層結構是JavaWeb開發中的一種設計思想,這樣會讓咱們開發井井有條,每一層只要完成對應的功能便可,使得項目便於開發和維護

 

1 . Web/表現層 : 主要接受前臺瀏覽器用戶的參數,給瀏覽器響應數據等等

  1. Service/業務成/服務層:主要處理業務功能,日誌,權限,事物,等等
  2. DAO/持久層 :專門負責和數據庫交互,數據處理相關代碼

 

DAO Data Access Object 數據訪問對象

 

實際開發中 用戶請求到-Web--->Service-->DAO

  

 

 使用DAO之後代碼的以及包的設計結構

開發中若是使用的分層,編寫的包和類名接口名等等都是有固定規則,不能隨便瞎寫

 

1.1.1. DAO層接口包命名

 

公司域名倒寫+項目名稱/模塊名稱+dao

如 : cn.sxt.crm.dao

1.1.2. DAO層實現類包命名

 

公司域名倒寫+項目名稱/模塊名稱+dao+impl

如 : cn.sxt.crm.dao.impl

 

1.1.3. DAO層操做對應表的接口命名

 

對應表的名稱 + Dao/DAO

 

如 : StudentDao/DAO , TeacherDao/DAO

 

1.1.1. DAO層操做對應表的實現類命名

 

對應表的名稱 + Dao/DAOImpl

 

如 : StudentDaoImpl/DAOImpl , TeacherDaoImpl/DAOImpl

1.1.2. 數據表對應的Javadomain/pojo包命名

POJOPlain Ordinary Java Object)簡單的Java對象
domian : 域對象

    

 

公司域名倒寫+項目名稱/模塊名稱+domain/pojo

如 : cn.sxt.crm.domain

 

1.1.3. 對應的測試包命名

公司域名倒寫+項目名稱/模塊名稱+test

如 : cn.sxt.crm.test

1.1.4. 項目的工具類包命名

公司域名倒寫+項目名稱/模塊名稱+util/utils

如 : cn.sxt.crm.util/utils

相關文章
相關標籤/搜索