1. public static void main(String[] args) {
    2. Connection connection = null;
    3. PreparedStatement preparedStatement = null;
    4. ResultSet resultSet = null;
    5. User user = new User();
    6. try {
    7. //====================== 1、加载驱动,创建数据库连接 ======================
    8. Class.forName("com.mysql.jdbc.Driver");
    9. connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf-8","root", "123456");
    10. //====================== 2、编写sql,创建预处理对象,参数对号入座,执行sql返回结果集 ======================
    11. String sql = "select * from user where username = ?";
    12. preparedStatement = connection.prepareStatement(sql);
    13. preparedStatement.setString(1, "lucy");
    14. resultSet = preparedStatement.executeQuery();
    15. //====================== 3、把结果集封装成对象 ======================
    16. while (resultSet.next()) {
    17. int id = resultSet.getInt("id");
    18. String username = resultSet.getString("username");
    19. user.setId(id);
    20. user.setUsername(username);
    21. }
    22. System.out.println(user);
    23. } catch (ClassNotFoundException ex) {
    24. ex.printStackTrace();
    25. } catch (SQLException ex) {
    26. ex.printStackTrace();
    27. } catch (Exception e) {
    28. e.printStackTrace();
    29. } finally {
    30. if (resultSet != null) {
    31. try {
    32. resultSet.close();
    33. } catch (SQLException e) {
    34. e.printStackTrace();
    35. }
    36. }
    37. if (preparedStatement != null) {
    38. try {
    39. preparedStatement.close();
    40. } catch (SQLException e) {
    41. e.printStackTrace();
    42. }
    43. }
    44. if (connection != null) {
    45. try {
    46. connection.close();
    47. } catch (SQLException e) {
    48. e.printStackTrace();
    49. }
    50. }
    51. }
    52. }

    JDBC问题总结:
    原始jdbc开发存在的问题如下:
    1、 数据库连接创建、释放频繁造成系统资源浪费,从⽽影响系统性能。
    2、 Sql语句在代码中硬编码,造成代码不易维护,实际应⽤中sql变化的可能较⼤,sql变动需要改变
    java代码。
    3、 使⽤preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不⼀定,可能
    多也可能少,修改sql还要修改代码,系统不易维护。
    4、 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据 库
    记录封装成pojo对象解析⽐较⽅便
    image.png