JDBCUtils入门详解

文章目录

JDBCUtils概念

JDBC全称为Java DataBase Connectivity,而JDBCUtils是为简化代码而出现的一个工具类

而我们使用JDBCUtils除了必备的驱动jar包 ,还有jdbc.properties文件JDBCUtils工具类

JDBCUtils的准备

1.在src下创建一个包,导入mysql-connector的jar包,添加依赖关系
2.创建jdbc.properties配置文件

JDBCUtils入门详解

jdbc.properties配置文件
( )中填入自己对应的数据库名称,用户和密码

url=jdbc:mysql:///(数据库名称)
user=(数据库用户)
password=(数据库密码)
driver=com.mysql.jdbc.Driver

JDBCUtils工具类的代码实现


public class JDBCUtils {


    private static String url;
    private static String user;
    private static String password;
    private static String driver;


    /**
     * jdbc.properties配置文件读取,只用执行一次,使用静态代码块
     */
    static {

        try {
            //1. 创建Properties集合类。
            Properties properties = new Properties();

            //获取src路径下的文件的方式--->ClassLoader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res  = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
            //2. 加载文件
            properties.load(new FileReader(path));

            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
            driver = properties.getProperty("driver");

            //注册驱动
            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 statement
     * @param connection
     */

    public static void close(Statement statement, Connection connection) {
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

    }

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

        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

}

使用JDBCUtils的优点,在我们有大量使用mysql的数据库的情况下,我们可以通过更改jdbc.properties配置文件就可以修改数据库的配置,而不是寻找代码然后在一次次更改代码中的数据

JDBCUtils代码测试演示

我们将数据库表格来当做一个对象

数据库表
JDBCUtils入门详解
创建一个数据库表的类,代码如下:

/**
 * 数据库student表的对应的类
 */
public class student {
    private int id;
    private String ename;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    @Override
    public String toString() {
        return "student{" +
                "id=" + id +
                ", ename='" + ename + '\'' +
                '}';
    }

测试JDBCUtils的测试类


/**
 * JDBCUtils的测试类
 * 
 */
public class JDBCUtilsDemo {

    public static void main(String[] args) {

        List<student> students = new JDBCUtilsDemo().finAll();
        System.out.println(students);
        System.out.println(students.size());

    }



    public List<student> finAll() {

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        List<student> list = null;

        try {

            //1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
            //2. 注册驱动
            //以上2步骤都通过JDBCUtils来简化了
            connection=JDBCUtils.getConnection();
            //3.定义sql
            String sql = "SELECT * from student";
            //4.获取执行sql的对象
            statement = connection.createStatement();
            //5.执行sql
            resultSet = statement.executeQuery(sql);

            //6.遍历结果集,封装对象,装载集合
            student stu = null;
            list = new ArrayList<student>();
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String ename = resultSet.getString("ename");

                stu = new student();

                stu.setId(id);
                stu.setEname(ename);

                list.add(stu);
            }


        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtils.close(statement,connection,resultSet);
        }
        return list;
    }

}


最后运行的结果

JDBCUtils入门详解

上一篇:大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:3.外观模式在Spring框架和SLF4J中的应用


下一篇:[hadoop][Azkaban]#1_azkaban快速入门