JDBC模板

public class DBUtil {
    public static Connection getConnection() {
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/java";
        String user = "root";
        String pass = "123";
        Connection conn = null;
        try {
            Class.forName(driver);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("注册失败");
        }
        try {
            conn = DriverManager.getConnection(url, user, pass);
        } catch (SQLException e) {
            System.out.println("数据库连接失败");
        }
        return conn;
    }

    public static void closeAll(ResultSet rs, Statement stmt, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if(stmt!=null){
                stmt.close();
            }
            if(conn!=null){
                conn.close();
            }

        } catch (SQLException e) {
            
        }finally{
            rs = null;
            stmt = null;
            conn = null;
        }

    }
}




public class JDBCTempleate {
    static Connection conn = null;
    static PreparedStatement pstmt = null;
    static ResultSet rs = null;
    /*对数据库的增加、删除、修改*/
    public static void update(String  sql,Object ...args){
        conn = DBUtil.getConnection();
        
        try {
            pstmt = conn.prepareStatement(sql);
            /*设置sql的参数*/
            for(int i = 0;i<args.length;i++){
                pstmt.setObject(i+1, args[i]);
            }            
            pstmt.executeUpdate();
        } catch (SQLException e) {
            
        }finally{
            DBUtil.closeAll(rs, pstmt, conn);
        }
        
    }
    /*第一个T是静态方法的泛型定义,因为在静态方法中不能使用类泛型,但可以使用方法泛型*/
    public static<E> List<E> query(String sql,RowMapper <E>rm,Object ...args)
    {    
        List <E>list = new ArrayList<E>();
        
        conn = DBUtil.getConnection();
        try {
            pstmt = conn.prepareStatement(sql);
            /*设置sql的参数*/
            for(int i = 0;i<args.length;i++){
                pstmt.setObject(i+1, args[i]);
            }
            
            rs = pstmt.executeQuery();
            while(rs.next()){
                E e = rm.mapRow(rs);
                list.add(e);
            }
            
        } catch (SQLException e) {
            
        }finally{
            DBUtil.closeAll(rs, pstmt, conn);
        }
        return list;
    }
    
    public static<T>T queryForObject(String sql,RowMapper <T>rm,Object ...args){
        T t = query(sql,rm,args).get(0);
        return t;
    }
}


public interface RowMapper <T>{
    /*通过rs当前的游标获取当前行的数据,并封装成T对象返回*/
    public T mapRow(ResultSet rs)throws SQLException;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值