java-jdbc封裝連接數據庫工具


在進行數據庫連接時,我們往往進行的是數據庫的連接,關閉操作,執行sql語句書寫在Dao層中操作

現對數據庫操作進行封裝,通過動態參數進行傳遞對象,

通過自建泛型實現返回類的接收,現程序如下:

/************************************************************   
Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.   
FileName:JDBCUtil.java 
  
Author:   Light     
Version :   version 1.0       
Date:       2018/7/12
Description:      jdbc鏈接數據庫的封裝// 模塊描述         
Version:         通過模塊化實現jdbc連接數據庫操作,減少開發代碼關於數據庫操作的編寫量// 版本信息 
  
Function List:     // 主要函數及其功能     
1.getConnection 進行數據庫的鏈接
2.close 進行數據庫的關閉
3.executeUpdate 執行數據的增刪改
4.executeQuery執行數據的查詢
 History: 
  // 歷史修改記錄 
      
    <author>  <time>   <version >   <desc>       
        David    96/10/12     1.0     build this moudle   

***********************************************************/ 

public class JDBCUtil {
    //鏈接地址,設置編碼可用且為utf-8
    public static String URL="jdbc:mysql://192.168.80.131:3306/db1?useUnicode=true&characterEncoding=utf8";
    //數據庫用戶名
    public static String USER="root";
    //數據庫密碼
    public static String PWD="123456";
    
    /*
    *進行數據庫的鏈接
    */
    public static Connection getConnection(){
        
        Connection con=null;
        try {
            //加載驅動
            Class.forName("com.mysql.jdbc.Driver");
            //創建鏈接
            con=DriverManager.getConnection(URL, USER, PWD);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //返回連接
        return con;
    }
    
    /*
    *數據庫關閉
    */
    public static void Close(Connection con,PreparedStatement pstmt,ResultSet rs){
        try {
            //判斷是否被操作
            if(rs!=null)
                rs.close();
            if(pstmt!=null)
                pstmt.close();
            if(con!=null)
                con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    /*
    *創建數據庫執行操作,返回受影響的行數
    *@param String sql
    *@param Object params
    *@return int result
    */
    public static int executeUpdate(String sql,Object... params){
        //創建鏈接
        Connection con=getConnection();
        PreparedStatement pstmt=null;
        int result=0;
        try {
            //預編譯sql語句,防止sql注入
            pstmt=con.prepareStatement(sql);
            //傳遞參數,如果參數存在
            if(params!=null){
                //進行循環傳參
                for(int i=0;i<params.length;i++){
                    pstmt.setObject(i+1, params[i]);
                }
            }
            //執行sql語句,返回受影響行數
            result=pstmt.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            Close(con,pstmt,null);
        }
        return result;
    }
    /*
    *進行數據的查詢,通過自建泛型RowMap,進行數據類型的定義
    *@param String sql
    *@param RowMap T
    *@param Object params
    *@return list<T>
    */
    public static <T> List<T> executeQuery(String sql,RowMap<T> rowMap,Object... params){
        //創建泛型List
        List<T> list=new ArrayList<>();
        //創建鏈接
        Connection con=getConnection();
        PreparedStatement pstmt=null;
        ResultSet rs=null;
        try {
            //綁定sql語句
            pstmt=con.prepareStatement(sql);
            //循環穿參
            if(params!=null){
                for(int i=0;i<params.length;i++){
                    pstmt.setObject(i+1, params[i]);
                }
            }
            //執行語句,用結果集接收
            rs=pstmt.executeQuery();
            while(rs.next()){
                //利用自建泛型實現數組的添加
                T t=rowMap.rowMapping(rs);
                list.add(t);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            Close(con,pstmt,rs);
        }
        return list;
    }
    
    //使用示例函數
    public static int update(){
        return executeUpdate("insert into student(name,age,sex) values(?,?,?)","姓名",12,"");
  }
}

自定義自建泛型

import java.sql.ResultSet;
//自建泛型,實現rowMappping返回T類型
public interface RowMap<T> {
    public T rowMapping(ResultSet rs);
}

 


免責聲明!

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



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