综合前几篇的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;
}
}
来源:CSDN
作者:fanfjaiynu
链接:https://blog.csdn.net/fanfjaiyun/article/details/104311603