自己封装JDBC工具类JDBCUtils

抽取JDBC工具类 :JDBCUtils

*目的:简化书写
*分析:
1.注册驱动代码抽取
2.抽取一个方法获取连接对象:
*不想传递参数,还要保证工具类的通用性
*解决:配置文件
3.抽取一个方法释放资源

package cn.itcast.util;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    private  static String driver;
    /**
     * 文件的读取只需要一次就可以。所以用静态代码块
     */
    static{
        try {
            //读取配置文件获取值
            //1.创建properties集合类
            Properties pro=new Properties();

            //获取src路径下的文件方式——ClassLoader类加载器
            URL resource = JDBCUtils.class.getClassLoader().getResource("jdbc.properties");
            String path = resource.getPath();

            //2.加载文件
            pro.load(new FileReader(path));
            //3.获取数据赋值
             url = pro.getProperty("url");
             user = pro.getProperty("user");
             driver= pro.getProperty("driver");
             password = pro.getProperty("password");
             //4.注册驱动
             Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取连接对象的方法
     * @return连接对象
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,user,password);
    }

    /**
     * 释放资源
     * @param stat
     * @param conn
     */
    public static void close(Statement stat,Connection conn){
        if(stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close(ResultSet res,Statement stat, Connection conn){
        if(res!=null){
            try {
                res.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

测试代码:如下

package cn.itcast.jdbc;

import cn.itcast.domain.User;
import cn.itcast.util.JDBCUtils;

import java.sql.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*
* 定义一个方法查询user表的数据,封装为对象,然后装载集合返回
* */
public class JdbcDemo9 {
    public static void main(String[] args) {
        List<User> list = new JdbcDemo9().findAll2();
        Iterator<User> iterator = list.iterator();
        while(iterator.hasNext()){
            User user = iterator.next();
            System.out.println(user);
        }
        System.out.println(list.size());
    }
    /**
     * 查询所有user对象
     * @return
     */
    public List<User> findAll2(){
        Connection conn =null;
        Statement stat =null;
        ResultSet res =null;
        List<User> list=null;
        try {
            conn = JDBCUtils.getConnection();
            String sql="select * from user";
            stat = conn.createStatement();
            res = stat.executeQuery(sql);
            list=new ArrayList<>();
            User user=null;
            while(res.next()){
                int id = res.getInt("id");
                String username = res.getString("username");
                String password1 = res.getString("password1");
                user=new User();
                user.setId(id);
                user.setUsername(username);
                user.setPassword1(password1);
                list.add(user);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {

            JDBCUtils.close(res,stat,conn);
        }
        return list;
    }
}

你可能感兴趣的:(java)