JDBC简单回顾

JDBC操作

public class Demo {
    public static void main(String[] args) {
        // 加载数据库驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 获取数据库连接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf-8", "root", "123456");
        // 定义sql语句
        String sql = "select * from user where username = ?";
        // 获取预处理statement
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        // 设置参数
        preparedStatement.setString(1, "tom");
        // 获取结果集
        ResultSet resultSet = preparedStatement.executeQuery();
        // 遍历结果集
        while (resultSet.next()) {
            User user = new User();
            user.setId(resultSet.getInt("id"));
            user.setUsername(resultSet.getString("username"));
            System.out.println(user);
        }
    }
}

存在的问题

  1. 数据库频繁创建连接、释放资源造成系统资源浪费,从而影响系统性能。
  2. sql语句在代码中硬编码,造成代码不易维护,实际应用中sql变化的可能较大,sql变动需要改变java代码。
  3. 使用preparedStatement向占位符传参数存在硬编码,因为sql语句的where条件会变化,修改sql还要改代码,系统不易维护。
  4. 对结果集解析存在硬编码,sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封闭成pojo对象比较方便。

解决方法

  • 数据库频繁创建、释放资源:使用连接池
  • sql语句和参数硬编码:使用配置文件
  • 手动解析封装返回结果集:使用反射、内省
上一篇:[Java-基础] 什么是ORM


下一篇:JDBC