最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、什么是BaseDao?

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

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

1、代碼復(fù)用

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

2、統(tǒng)一管理

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

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

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

4、提供擴(kuò)展性

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

5、降低耦合性

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

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

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

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

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

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

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

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

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

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

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

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

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

2)BaseDao封裝增刪改查

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

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

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

/**
     * 查看的操作
     * @param sql 預(yù)編譯的 SQL 語(yǔ)句
     * @param objs 參數(shù)的字符串?dāng)?shù)組
     * @return 返回查看數(shù)據(jù)行數(shù)
     *查詢一個(gè)字段 (只會(huì)返回一條記錄且只有一個(gè)字段;常用場(chǎng)景:查詢總數(shù)量)
     * 1、得到數(shù)據(jù)庫(kù)連接
     * 2、定義sql語(yǔ)句
     * 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ù)庫(kù)連接
            getConnection();
            //定義sql語(yǔ)句
            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 語(yǔ)句
     * @param param 參數(shù)的字符串?dāng)?shù)組
     * @return 影響的行數(shù)
     * 增、刪、改一個(gè)字段(返回一條記錄是否更新成功?。?
     * 1、得到數(shù)據(jù)庫(kù)連接
     * 2、定義sql語(yǔ)句
     * 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ù)庫(kù)連接
        conn =  getConnection();
        try {
            //定義sql語(yǔ)句
            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é)果集對(duì)象是否為空,是則關(guān)閉

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

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

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

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

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

相關(guān)文章

  • Nacos配置管理實(shí)踐(手把手教你搭建Nacos集群)

    Nacos配置管理實(shí)踐(手把手教你搭建Nacos集群)

    本文詳解Nacos配置管理在微服務(wù)中的實(shí)現(xiàn),包括通過bootstrap.yml讀取Nacos配置、配置優(yōu)先級(jí)規(guī)則(本地>服務(wù)名>環(huán)境)、熱更新機(jī)制及集群搭建步驟(數(shù)據(jù)庫(kù)初始化、Nginx反向代理),強(qiáng)調(diào)多環(huán)境隔離與容災(zāi)部署優(yōu)化
    2025-08-08
  • WebSocket實(shí)現(xiàn)數(shù)據(jù)庫(kù)更新時(shí)前端頁(yè)面刷新

    WebSocket實(shí)現(xiàn)數(shù)據(jù)庫(kù)更新時(shí)前端頁(yè)面刷新

    這篇文章主要為大家詳細(xì)介紹了WebSocket實(shí)現(xiàn)數(shù)據(jù)庫(kù)更新時(shí)前端頁(yè)面刷新,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Java中EnumMap和EnumSet枚舉操作類的簡(jiǎn)單使用詳解

    Java中EnumMap和EnumSet枚舉操作類的簡(jiǎn)單使用詳解

    這篇文章主要介紹了Java中EnumMap和EnumSet枚舉操作類的簡(jiǎn)單使用詳解,EnumMap是Map接口的一種實(shí)現(xiàn),專門用于枚舉類型的鍵,所有枚舉的鍵必須來自同一個(gè)枚舉?EnumMap不允許鍵為空,允許值為空,需要的朋友可以參考下
    2023-11-11
  • SpringBoot整合JPA的增刪改查教程

    SpringBoot整合JPA的增刪改查教程

    SpringJPA通過對(duì)象關(guān)系映射、倉(cāng)庫(kù)接口、查詢生成和事務(wù)管理,簡(jiǎn)化了Java應(yīng)用程序中的數(shù)據(jù)持久化操作,它自動(dòng)實(shí)現(xiàn)數(shù)據(jù)訪問,減少樣板代碼,降低復(fù)雜性,并與Spring框架無縫集成
    2026-03-03
  • 一文揭秘Java內(nèi)存模型的隱匿陷阱與解決方案

    一文揭秘Java內(nèi)存模型的隱匿陷阱與解決方案

    這篇文章主要為大家詳細(xì)介紹了Java中內(nèi)存模型的隱匿陷阱與解決方案,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-06-06
  • Spring?中?PageHelper?不生效問題及解決方法

    Spring?中?PageHelper?不生效問題及解決方法

    這篇文章主要介紹了Spring?中?PageHelper?不生效問題,使用這個(gè)插件時(shí)要注意版本的問題,不同的版本可能 PageHelper 不會(huì)生效,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Lombok的詳細(xì)使用及優(yōu)缺點(diǎn)總結(jié)

    Lombok的詳細(xì)使用及優(yōu)缺點(diǎn)總結(jié)

    最近在學(xué)Mybatis,接觸到了Lombok的使用,所以寫一篇文章記錄一下,包括lombok的安裝及使用優(yōu)缺點(diǎn),感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • java求100以內(nèi)的素?cái)?shù)示例分享

    java求100以內(nèi)的素?cái)?shù)示例分享

    素?cái)?shù)是指因數(shù)只有1和本身的數(shù)字,這篇文章主要介紹了java求100以內(nèi)的素?cái)?shù)示例,需要的朋友可以參考下
    2014-03-03
  • Java System類用法實(shí)戰(zhàn)案例

    Java System類用法實(shí)戰(zhàn)案例

    這篇文章主要介紹了Java System類用法,結(jié)合具體實(shí)例形式分析了java使用System類獲取系統(tǒng)環(huán)境變量信息相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Spring Security基本架構(gòu)與初始化操作流程詳解

    Spring Security基本架構(gòu)與初始化操作流程詳解

    這篇文章主要介紹了Spring Security基本架構(gòu)與初始化操作流程,Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架
    2023-03-03

最新評(píng)論

喜德县| 玛沁县| 高要市| 称多县| 翼城县| 石首市| 会同县| 封开县| 富阳市| 江安县| 临猗县| SHOW| 吉林省| 乐至县| 武冈市| 清丰县| 江山市| 滦平县| 株洲市| 塔河县| 布尔津县| 宝鸡市| 始兴县| 敦化市| 西城区| 新龙县| 井陉县| 灵川县| 比如县| 自贡市| 桦南县| 老河口市| 广水市| 木兰县| 广昌县| 汾西县| 鹰潭市| 威信县| 丰都县| 蓬安县| 兴隆县|