文章目录
JDBCUtils概念
JDBC全称为Java DataBase Connectivity,而JDBCUtils是为简化代码而出现的一个工具类
而我们使用JDBCUtils除了必备的驱动jar包 ,还有jdbc.properties文件和JDBCUtils工具类
JDBCUtils的准备
1.在src下创建一个包,导入mysql-connector的jar包,添加依赖关系
2.创建jdbc.properties配置文件
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代码测试演示
我们将数据库表格来当做一个对象
数据库表
创建一个数据库表的类,代码如下:
/**
* 数据库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;
}
}
最后运行的结果