JDBC操作数据库06

大城市里の小女人 提交于 2020-02-16 09:32:20

综合前几篇的jdbc操作看都有一个问题,那就是需要写的重复步骤过多,浪费时间,所以可以写一个jdbc工具类,将一些重复的代码进行封装,需要时直接调用

步骤:
1、编写JdbcUtil类作为公共代码封装
2、实现代码与数据分离,方便以后修改等操作。使用参数传递的方式较麻烦,所以这里使用读取配置文件,定义配置文件jdbcinfo.properties

JdbcUtils工具类

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

/**
 * @ClassName: JdbcUtils
 * @Description: TODO
 * @author: Doge_fang
 * @date: 2020/2/14  14:13
 *
 *jdbc工具类,用于封装jdbc操作数据库的重复代码
 */
public class JdbcUtils {

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

    //数据库连接信息可以放在配置文件中
    //配置文件只需要读取一次就可以拿到这些数据,可以写在静态代码块中
    static{
        try {
            //创建properties集合类
            Properties pro = new Properties();
            //获取src路径下文件的方式---classloader加载器
            ClassLoader loader = JdbcUtils.class.getClassLoader();
            URL res = loader.getResource("jdbcinfo.properties");
            String path = res.getPath();
            pro.load(new FileReader(path));

            //获取数据并赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");
            //注册驱动
            Class.forName(driver);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    /**
     * 获取连接方法
     * @return 连接对象
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }

    /**
     *获取执行sql对象
     * @return
     * @throws SQLException
     */
    public static Statement getStatement() throws SQLException {
        return  JdbcUtils.getConnection().createStatement();
    }


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

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

}

jdbcinfo.properties配置文件
在这里插入图片描述
jdbc连接操作

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

/**
 * @ClassName: JdbcBase
 * @Description: TODO
 * @author: Doge_fang
 * @date: 2020/2/12  14:46
 *
 * 定义一个方法,查询t_sys_user表的数据将其封装为集合,返回
 */
public class Jdbc_Base05 {
    public static void main(String[] args) {
        List<SysUser> list = new Jdbc_Base05().quaryAll();
        System.out.println(list);
    }


    public List<SysUser> quaryAll() {
        Connection conn = null;
        Statement statement = null;
        ResultSet rs = null;
        List<SysUser> list = null;

        try {
            //获取连接资源
            conn = JdbcUtils.getConnection();
            //定义sql
            String sql = "select * from userinfo;";
            //获取执行sql对象
            statement= JdbcUtils.getStatement();
            //执行sql
            rs = statement.executeQuery(sql);
            //遍历结果集,封装对象,装载集合
            //获取数据
            list = new ArrayList();
            while (rs.next()) {
                int id = rs.getInt("id");
                String username = rs.getString("username");
                int phonenumber = rs.getInt("phonenumber");
                Date createdate = rs.getDate("createtime");
                //创建t_sys_user对象并赋值
                SysUser SysUser = new SysUser();
                SysUser.setId(id);
                SysUser.setUsername(username);
                SysUser.setPhonenumber(phonenumber);
                SysUser.setCreatetime(createdate);

                //装载集合
                list.add(SysUser);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.close(conn, statement, rs);
        }
        return list;
    }
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!