亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

BaseDao封裝增刪改查的代碼詳解

 更新時(shí)間:2024年03月28日 08:52:17   作者:錦湘  
本篇文章主要介紹對數(shù)據(jù)庫中表中的數(shù)據(jù)進(jìn)行增改刪查詢,封裝一個(gè)工具類(BaseDao)的詳細(xì)使用以及部分理論知識,并通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下

一、什么是BaseDao?

BaseDao是一種通用的數(shù)據(jù)訪問對象,用于提供對數(shù)據(jù)庫的基本操作,例如插入、更新、刪除和查詢數(shù)據(jù)等。它通常封裝了對數(shù)據(jù)庫的底層操作,使得其他DAO對象可以繼承BaseDao以獲得對數(shù)據(jù)庫的訪問能力,同時(shí)減少了重復(fù)的代碼編寫。BaseDao可以提供基本的CRUD(創(chuàng)建、讀取、更新、刪除)功能,同時(shí)也可以實(shí)現(xiàn)一些通用的查詢方法,例如按條件查詢、分頁查詢等。通過使用BaseDao,開發(fā)人員可以更加方便地操作數(shù)據(jù)庫,提高開發(fā)效率。

BaseDao的優(yōu)點(diǎn):

1、代碼復(fù)用

BaseDao提供了通用的數(shù)據(jù)庫操作方法,可以將一些重復(fù)的數(shù)據(jù)庫操作封裝起來,從而減少代碼冗余。

2、統(tǒng)一管理

通過BaseDao可以將數(shù)據(jù)庫操作集中管理,可以統(tǒng)一維護(hù)和修改數(shù)據(jù)庫操作邏輯,提高代碼的可維護(hù)性。

3、提高開發(fā)效率

使用BaseDao可以快速完成數(shù)據(jù)庫操作,減少開發(fā)人員編寫重復(fù)代碼的時(shí)間,提高開發(fā)效率。

4、提供擴(kuò)展性

BaseDao可以根據(jù)具體業(yè)務(wù)需求進(jìn)行擴(kuò)展,例如添加新的查詢方法或者自定義的數(shù)據(jù)庫操作邏輯。

5、降低耦合性

通過BaseDao可以將數(shù)據(jù)庫操作與業(yè)務(wù)邏輯分離,降低模塊之間的耦合性,提高系統(tǒng)的可維護(hù)性和可測試性。

綜上所述,BaseDao的使用可以簡化數(shù)據(jù)庫操作,提高開發(fā)效率和代碼質(zhì)量。

二、BaseDao具體是做什么操作的?

BaseDao主要負(fù)責(zé)從數(shù)據(jù)庫獲取數(shù)據(jù),對數(shù)據(jù)庫中表的增刪改查等數(shù)據(jù)進(jìn)行操作。

具體來說,BaseDao可以完成以下操作:

1, 新增數(shù)據(jù):將數(shù)據(jù)新增到數(shù)據(jù)庫中,包括單條數(shù)據(jù)和批量數(shù)據(jù)新增。

2,修改數(shù)據(jù):修改數(shù)據(jù)庫中已有的數(shù)據(jù),可以根據(jù)指定的條件來修改更新數(shù)據(jù)。

3,刪除數(shù)據(jù):刪除數(shù)據(jù)庫中的數(shù)據(jù),可以根據(jù)指定的條件來刪除數(shù)據(jù)。

4,查詢數(shù)據(jù):從數(shù)據(jù)庫中獲取數(shù)據(jù),可以根據(jù)指定的條件進(jìn)行查詢,也可以進(jìn)行分頁查詢。

除了上述基本操作,BaseDao還可以提供一些通用的查詢方法,例如按條件查詢、排序查詢、聚合查詢等,以滿足各種不同的業(yè)務(wù)需求。通過繼承BaseDao,開發(fā)人員可以復(fù)用這些基本操作,減少重復(fù)的代碼編寫,提高開發(fā)效率。

三、BaseDao封裝增刪改查(代碼詳解)

1)基礎(chǔ)的JDBC操作類

  • 更新操作 (添加、修改、刪除)
    • 1. 添加(添加單條數(shù)據(jù)和批量數(shù)據(jù))
    • 2. 修改(修改數(shù)據(jù)庫中已有的數(shù)據(jù),可以根據(jù)指定的條件來修改更新數(shù)據(jù))
    • 3. 刪除(刪除數(shù)據(jù)庫中的數(shù)據(jù),可以根據(jù)指定的條件來刪除數(shù)據(jù))
  • 查詢操作
    • 1. 查詢一個(gè)字段 (只會返回一條記錄且只有一個(gè)字段;常用場景:查詢總數(shù)量)
    • 2. 查詢集合

2)BaseDao封裝增刪改查

1、連接:將數(shù)據(jù)庫與Java進(jìn)行連接

/**
 * 數(shù)據(jù)庫連接
 */
public class BaseDao {
    private String driver = "com.mysql.jdbc.Driver";// 數(shù)據(jù)庫驅(qū)動字符串
    private String url = "jdbc:mysql://localhost:3306/epet";// 連接URL字符串
    private String user = "root"; // 數(shù)據(jù)庫用戶名
    private String password = "root"; // 用戶密碼
    Connection conn = null;				// 數(shù)據(jù)連接對象
    /**
     * 獲取數(shù)據(jù)庫連接對象
     */
    public Connection getConnection() {
        if(conn==null) {
            // 獲取連接并捕獲異常
            try {
                Class.forName(driver);
                conn = DriverManager.getConnection(url, user, password);
            } catch (Exception e) {
                e.printStackTrace();// 異常處理
            }
        }
        return conn;/ 返回連接對象
    }

2、查詢:查詢一個(gè)字段(返回一條記錄且只有一個(gè)字段,常用場景:查詢走數(shù)量)

/**
     * 查看的操作
     * @param sql 預(yù)編譯的 SQL 語句
     * @param objs 參數(shù)的字符串?dāng)?shù)組
     * @return 返回查看數(shù)據(jù)行數(shù)
     *查詢一個(gè)字段 (只會返回一條記錄且只有一個(gè)字段;常用場景:查詢總數(shù)量)
     * 1、得到數(shù)據(jù)庫連接
     * 2、定義sql語句
     * 3、預(yù)編譯
     * 4、如果有參數(shù),則設(shè)置參數(shù),下標(biāo)從1開始 (數(shù)組或集合、循環(huán)設(shè)置參數(shù))
     * 5、執(zhí)行查詢,返回結(jié)果集
     * 6、判斷并分析結(jié)果集
     * 7、關(guān)閉資源
     */
    public ResultSet getCheckAll(String sql,Object [] objs){
        ResultSet rs=null;
        PreparedStatement pstmt = null;
        try {
            //得到數(shù)據(jù)庫連接
            getConnection();
            //定義sql語句
            pstmt=conn.prepareStatement(sql);
            //預(yù)編譯
            if(objs!=null){
                //如果有參數(shù),則設(shè)置參數(shù),下標(biāo)從1開始 (數(shù)組或集合、循環(huán)設(shè)置參數(shù))
                for (int i = 0; i <objs.length; i++) {
                    pstmt.setObject(i+1, objs[i]);
                }
            }
            //執(zhí)行查詢,返回結(jié)果集
            rs=pstmt.executeQuery();
        } catch (SQLException e) {
            //拋出異常
            e.printStackTrace();
        } finally{
            //關(guān)閉資源
            closeAll(conn,pstmt,rs);
        }
        return rs;
    }

3、增刪改:增、刪、改一個(gè)字段(返回一條記錄是否更新成功!)

/**
     * 增、刪、改的操作
     * @param preparedSql 預(yù)編譯的 SQL 語句
     * @param param 參數(shù)的字符串?dāng)?shù)組
     * @return 影響的行數(shù)
     * 增、刪、改一個(gè)字段(返回一條記錄是否更新成功?。?
     * 1、得到數(shù)據(jù)庫連接
     * 2、定義sql語句
     * 3、預(yù)編譯
     * 4、如果有參數(shù),則設(shè)置參數(shù),下標(biāo)從1開始 (數(shù)組或集合、循環(huán)設(shè)置參數(shù))
     * 5、執(zhí)行增、刪、改,返回結(jié)果
     * 6、判斷并分析結(jié)果
     * 7、關(guān)閉資源
     */
    public int exceuteUpdate (String preparedSql, Object[] param) {
        PreparedStatement pstmt = null;
        int num = 0;
        //得到數(shù)據(jù)庫連接
        conn =  getConnection();
        try {
            //定義sql語句
            pstmt = conn.prepareStatement(preparedSql);
            if (param != null) {
                for (int i = 0; i < param.length; i++) {
                    //為預(yù)編譯sql設(shè)置參數(shù)
                    pstmt.setObject(i + 1, param[i]);
                }
            }
            //執(zhí)行增、刪、改,返回結(jié)果
            num = pstmt.executeUpdate();
        } catch (SQLException e) {
            //拋出sql類型異常
            e.printStackTrace();
        } finally{
            //關(guān)閉資源
            closeAll(conn,pstmt,null);
        }
        return num;
    }

4、關(guān)閉:判斷結(jié)果集對象是否為空,是則關(guān)閉

/**
     * 關(guān)閉數(shù)據(jù)庫連接
     * @param conn 數(shù)據(jù)庫連接
     * @param stmt Statement對象
     * @param rs 結(jié)果集
     */
    public void closeAll(Connection conn, Statement stmt, ResultSet rs) {
        // 若結(jié)果集對象不為空,則關(guān)閉
        if (rs != null) {
            try {
                rs.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        // 若Statement對象不為空,則關(guān)閉
        if (stmt != null) {
            try {
                stmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        // 若數(shù)據(jù)庫連接對象不為空,則關(guān)閉
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

3)演示BaseDao增刪改查使用方法

以下代碼是進(jìn)行測試BaseDao增刪改查以及演示BaseDao增刪改查使用方法

package cn.gd.dao;
/**
 * 測試BaseDao增刪改查
 * 演示BaseDao增刪改查使用方法
 * */
public class testDao {
    public static void main(String[] args) {
        /*導(dǎo)入BaseDao方法*/
        BaseDao dao = new BaseDao();
 
        /*1、測試新增功能*/
        //1.1、傳入sql語句 1.2、傳入Object類型對象
        String sqlAdd = "insert into booksTab(id,name,author,price)VALUES(?,?,?,?)";
        Object[] objsAdd = {1001, "java入門到入獄", "唐某某",158};
        //返回結(jié)果
        dao.exceuteUpdate(sqlAdd, objsAdd);
 
        /*2、測試刪除功能*/
        //2.1、傳入sql語句 2.2、傳入Object類型對象
        String sqlDel = "delete booksTab where id = ?";
        Object[] objsDel = {1001};
        //返回結(jié)果
        dao.exceuteUpdate(sqlDel, objsDel);
 
        /*3、測試修改功能*/
        //3.1、傳入sql語句 3.2、傳入Object類型對象
        String sqlUpdate = "update booksTab set name= ?,author = ?,price =? where id = ?";
        Object[] objsUpdate = {"java入門到入獄","唐某某",158,1001};
        //返回結(jié)果
        dao.exceuteUpdate(sqlUpdate, objsUpdate);
 
        /*4、測試查看功能*/
        //4.1、傳入sql語句 4.2、傳入Object類型對象
        String sqlCheck = "select * from booksTab;";
        Object[] objsCheck = {};
        //返回結(jié)果集
        dao.getCheckAll(sqlCheck, objsCheck);
    }
}

到此這篇關(guān)于BaseDao封裝增刪改查的代碼詳解的文章就介紹到這了,更多相關(guān)BaseDao封裝增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中使用BigDecimal進(jìn)行精確運(yùn)算

    Java中使用BigDecimal進(jìn)行精確運(yùn)算

    這篇文章主要介紹了Java中使用BigDecimal進(jìn)行精確運(yùn)算的方法,非常不錯(cuò),需要的朋友參考下
    2017-02-02
  • java實(shí)現(xiàn)百度云文字識別接口代碼

    java實(shí)現(xiàn)百度云文字識別接口代碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)百度云文字識別的接口代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • vscode快速引入第三方j(luò)ar包發(fā)QQ郵件

    vscode快速引入第三方j(luò)ar包發(fā)QQ郵件

    這篇文章主要介紹了vscode快速引入第三方j(luò)ar包發(fā)QQ郵件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • mybatis-plus雪花算法生成Id使用詳解

    mybatis-plus雪花算法生成Id使用詳解

    本文主要介紹了mybatis-plus雪花算法生成Id使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • SpringMVC 限流的示例代碼

    SpringMVC 限流的示例代碼

    這篇文章主要介紹了SpringMVC 限流的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Java創(chuàng)建文件且寫入內(nèi)容的方法

    Java創(chuàng)建文件且寫入內(nèi)容的方法

    這篇文章主要介紹了Java創(chuàng)建文件且寫入內(nèi)容的方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Spring中的ThreadPoolTaskExecutor線程池使用詳解

    Spring中的ThreadPoolTaskExecutor線程池使用詳解

    這篇文章主要介紹了Spring中的ThreadPoolTaskExecutor線程池使用詳解,ThreadPoolTaskExecutor 是 Spring框架提供的一個(gè)線程池實(shí)現(xiàn),用于管理和執(zhí)行多線程任務(wù),它是TaskExecutor接口的實(shí)現(xiàn),提供了在 Spring 應(yīng)用程序中創(chuàng)建和配置線程池的便捷方式,需要的朋友可以參考下
    2024-01-01
  • springcloud 熔斷監(jiān)控Hystrix Dashboard和Turbine

    springcloud 熔斷監(jiān)控Hystrix Dashboard和Turbine

    這篇文章主要介紹了springcloud 熔斷監(jiān)控Hystrix Dashboard和Turbine,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • java 迭代器模式實(shí)例詳解

    java 迭代器模式實(shí)例詳解

    這篇文章主要介紹了java 迭代器模式實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 教你用JAVA寫文本編輯器(二)

    教你用JAVA寫文本編輯器(二)

    之前介紹了JAVA寫文本編輯器的基本思路,下面這篇文章就來給大家介紹了關(guān)于用JAVA寫文本編輯器的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11

最新評論