JDBC代码示例
public static void main(String[] args) {
//数据库连接对象
Connection connection = null;
//预处理对象
PreparedStatement preparedStatement = null;
//结果集对象
ResultSet resultSet = null;
try {
//1.加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//2.通过驱动 获取数据库连接对象
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "root");
//3.构造查询SQL
String sql = "select * from user where userName=?";
//4.通过连接获取预处理对象
preparedStatement = connection.prepareStatement(sql);
//5.设置参数
preparedStatement.setString(1, "lcg");
//6.查询数据库
resultSet = preparedStatement.executeQuery();
//7.遍历查询结果,封装成对象
while (resultSet.next()) {
String id = resultSet.getString("id");
String userName = resultSet.getString("userName");
System.out.println("id:" + id + ",userName=" + userName);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭resultSet
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭preparedStatement
if (preparedStatement != null) {
try {
preparedStatement.cancel();
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭connection
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
问题分析
1.试想,如果直接用jdbc进行数据库操作,那么会出现什么问题?
频繁创建,释放数据库连接,造成系统资源浪费,影响系统性能。
2.硬编码问题
a.SQL语句硬编码,不易维护
b.参数设置硬编码,不易维护
c.结果集解析硬编码,不易维护
解决思路
数据库频繁创建,释放连接:连接池技术
SQL语句以及参数硬编码问题:采用配置文件
对结果集对封装:采用反射、内省技术