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);
}

 

posted @ 2018-07-12 23:12  随风的叶子  阅读(1778)  评论(0编辑  收藏  举报