201521123014 《Java程序設計》第14周學習總結

1. 本週學習總結

1.1 以你喜歡的方式(思惟導圖或其餘)概括總結多數據庫相關內容。

數據庫是爲了實現必定目的按某種規則組織起來的「數據」的「集合」。常見的數據庫管理軟件有不少,咱們主要用的是MySQL。
MySql數據庫簡單操做:一. 啓動與退出 1.啓動MySQL Command Line Client(MySQL的控制檯界面),直接輸入安裝時的密碼便可。此時的提示符爲:mysql>.2. 退出MySQL:quit或exit
庫操做:顯示全部數據庫: show databases; 建立數據庫:     create database test; 刪除數據庫:     drop database test;鏈接數據庫:     use test;查看當前鏈接的數據庫: select database();當前數據庫包含的表:  show tables; 
3、表操做2.刪除表  drop table students; 3.插入數據 insert into students(stuno,name,gender,birthdate,major,age) values('201010001', 'zhangsan', 'm', '1992-10-01','cs',25);4. 查詢表中的數據 select * from students;5. 刪除表中數據刪除students表中編號爲1 的記錄delete from students where id = 1; 

JDBC簡介:咱們剛纔是以命令行的方式來操做數據庫?那麼怎樣使用java代碼來操做數據庫呢?可使用Java中的JDBC API.java.sql.DriverManager:加載驅動、創建鏈接做用:載入各類不一樣的JDBC驅動
java.sql.Connection  :數據庫鏈接
java.sql.Statement   :處理鏈接中的SQL語句
java.sql.ResultSet   :處理結果集

JDBC編程通常步驟
1.與數據庫創建鏈接(Connection)
2.向數據庫發送SQL語句(statement)
3.得到和處理查詢或更新語句返回的結果 
注:使用查詢語句可得到ResultSet
4.關閉鏈接,釋放資源
通常來講ResultSet、Statement、Connection使用完後要馬上關閉


2. 書面做業

Q1 MySQL數據庫基本操做

創建數據庫,將本身的姓名、學號做爲一條記錄插入。(截圖,需出現本身的學號、姓名)

在本身創建的數據庫上執行常見SQL語句(截圖)

Q2 使用JDBC鏈接數據庫與Statement

2.1 使用Statement操做數據庫。(粘貼一段你認爲比較有價值的代碼,出現學號)

//201521123014
public class JDBCTest {  
    /** 
     * 使用JDBC鏈接並操做mysql數據庫 
     */  
    public static void main(String[] args) {  
        // 數據庫驅動類名的字符串  
        String driver = "com.mysql.jdbc.Driver";  
        // 數據庫鏈接串  
        String url = "jdbc:mysql://127.0.0.1:3306/jdbctest";  
        // 用戶名  
        String username = "root";  
        // 密碼  
        String password = "mysqladmin";  
        Connection conn = null;  
        Statement stmt = null;  
        ResultSet rs = null;  
        try {  
            // 一、加載數據庫驅動( 成功加載後,會將Driver類的實例註冊到DriverManager類中)  
            Class.forName(driver );  
            // 二、獲取數據庫鏈接  
            conn = DriverManager.getConnection(url, username, password);  
            // 三、獲取數據庫操做對象  
            stmt = conn.createStatement();  
            // 四、定義操做的SQL語句  
            String sql = "select * from user where id = 100";  
            // 五、執行數據庫操做  
            rs = stmt.executeQuery(sql);  
            // 六、獲取並操做結果集  
            while (rs.next()) {  
                System.out.println(rs.getInt("id"));  
                System.out.println(rs.getString("name"));  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            // 七、關閉對象,回收數據庫資源  
            if (rs != null) { //關閉結果集對象  
                try {  
                    rs.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
            if (stmt != null) { // 關閉數據庫操做對象  
                try {  
                    stmt.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
            if (conn != null) { // 關閉數據庫鏈接對象  
                try {  
                    if (!conn.isClosed()) {  
                        conn.close();  
                    }  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
}

2.2 使用JDBC操做數據庫主要包含哪幾個步驟?

1)加載(註冊)數據庫驅動(到JVM)。
2)創建(獲取)數據庫鏈接。
3)建立(獲取)數據庫操做對象。
4)定義操做的SQL語句。
5)執行數據庫操做。
6)獲取並操做結果集。
7)關閉對象,回收數據庫資源(關閉結果集-->關閉數據庫操做對象-->關閉鏈接)。

Q3 PreparedStatement與參數化查詢

3.1 使用PreparedStatement根據用戶指定的查詢條件進行查詢。(粘貼一段你認爲比較有價值的代碼,出現學號)

3.2 批量更新-批量插入1000個學生,統計整個操做所消耗的時間。(使用方法executeBatch)

Q4 JDBCUtil與DAO

4.1 粘貼一段你認爲比較有價值的代碼,出現學號

public class BaseDao {

    // 初始化參數
    private Connection con;
    private PreparedStatement pstmt;
    private ResultSet rs;

 public void update(String sql,Object[] paramsValue){

        try {
            // 獲取鏈接
            con = JdbcUtil.getConnection();
            // 建立執行命令的stmt對象
            pstmt = con.prepareStatement(sql);
            // 參數元數據: 獲得佔位符參數的個數
            int count = pstmt.getParameterMetaData().getParameterCount();

            // 設置佔位符參數的值
            if (paramsValue != null && paramsValue.length > 0) {
                // 循環給參數賦值
                for(int i=0;i<count;i++) {
                    pstmt.setObject(i+1, paramsValue[i]);
                }
            }
            // 執行更新
            pstmt.executeUpdate();

        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            JdbcUtil.closeAll(con, pstmt, null);
        }
}
編寫實際操做的Dao類繼承自BaseDao
public class AdminDao extends BaseDao {

    // 刪除
    public void delete(int id) {
        String sql = "delete from admin where id=?";
        Object[] paramsValue = {id};
        super.update(sql, paramsValue);
    }

    // 插入
    public void insert(Admin admin) {
        String sql = "insert into admin (userName,pwd) values (?,?)";
        Object[] paramsValue = {admin.getUserName(),admin.getPwd()};
        super.update(sql, paramsValue);
    }

    // 查詢所有
    public List<Admin> getAll(){
        String sql = "select * from admin";
        List<Admin> list = super.query(sql, null, Admin.class);
        return list;
    }

    // 根據條件查詢(主鍵)
    public Admin findById(int id){
        String sql = "select * from admin where id=?";
        List<Admin> list = super.query(sql, new Object[]{id}, Admin.class);
        return  (list!=null&&list.size()>0) ? list.get(0) : null;
    }
}

4.2 使用DAO模式訪問數據庫有什麼好處?

DAO (Data Access Objects) 數據訪問對象,這些對象用於訪問修改數據庫。這樣作的好處是,數據庫的修改只要修改DAO層的訪問方式就能夠了,不用整個項目都進行修改。隔離業務邏輯代碼和數據訪問代碼,
隔離不一樣數據庫的實現。html

Q5 使用數據庫改造購物車系統

5.1 使用數據庫改造之前的購物車系統(應有圖形界面)。若是之前爲完成購物車系統,可編寫基於數據庫的學生管理系統。包括對學生的增刪改查,要求使用。

5.2 相比較使用文件,使用數據庫存儲與管理數據有何不同?

  1. 使用文件操做數據,須要打開文件和關閉文件,而用數據庫來操做數據,只須要輸入命令來實現數據的存儲等功能,更加簡單。
  2. 數據庫還能夠儲存大量數據。
  3. 查看數據庫的數據須要有密碼的輸入,而文件是任何人均可以查看,比較的話,數據庫更安全

3. 碼雲

3.1. 碼雲代碼提交記錄

在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖java


4 課外閱讀

4.2 代碼結構中Dao,Service,Controller,Util,Model是什麼意思,爲何劃分

Model是模型,通常而言,會有人分的更細,VO,DTO等等。我並不推薦分的更細,這個Model經常和持久化的數據一一對應,如Mysql和MongoDB。
Model承載的做用就是數據的抽象,描述了一個數據的定義,Model的實例就是一組組的數據。整個系統均可以當作是數據的 流動,既然要流動,就必定是有流動的載體。
對於初學者而言,第一個要學會,就是建模,把業務邏輯映射成數據模型。mysql

Util是工具的意思,通常來講,經常用來描述和業務邏輯沒有關係的數據處理。Util通常要和私有方法對比:私有方法通常來講是隻是在特意場景下使用的,私有方法越多,代碼結構越亂。常見的重構策略就是首先從一個越長行數的代碼裏抽象出若干個私有方法,而後再抽出公用的Util。若是有可能,儘量的少用私有方法,而是把他換成一個公用的Util,表明他和業務邏輯是不相關的。一般命名也是ArticleUtil,CommentUtil之類的。sql

Service比Util的概念大不少,它的重點是在於提供一個服務。這個服務可能包括一系列的數據處理,也有可能會調用多個Util,或者是調用別的服務。總歸一句話,就是,有什麼事情,你來找我。數據庫

Dao通常而言,都是用來和底層數據庫通訊,負責對數據庫的增刪改查編程

Controller控制中心,全部的指令,調度都從這裏發出去。哪個Service作什麼事兒,誰的數據提供給誰,通常而言,都是在Controller裏實現的。安全

4.3 mysq數據庫管理工具navicat基本使用方法

參考連接工具

相關文章
相關標籤/搜索