JDBC操作数据库

116 阅读1分钟

代码演示

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.17</version>
        </dependency>
 public static void main(String[] args) throws SQLException {
        Connection connection=null;
        PreparedStatement preparedStatement=null;
        //1.加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //2.通过驱动管理器获取连接
             connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf-8", "root", "123456");
            //3.获取预处理器
            String sql = "select * from user where id=?";
            preparedStatement = connection.prepareStatement(sql);
            //4.设置参数
            preparedStatement.setInt(1,1);
            ResultSet resultSet = preparedStatement.executeQuery();
            User user = new User();
            while ( resultSet.next() ) {
                int id = resultSet.getInt("id");
                String username = resultSet.getString("username");
                user.setId(id);
                user.setUsernmae(username);
            }
            System.out.println(user);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (preparedStatement!=null) {
                preparedStatement.close();
            }
            if (connection!=null) {
                connection.close();
            }
        }



    }
<dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.17</version>
</dependency>

结果显示 User{id=1, usernmae='lucy'} 存在的问题

  • 数据库连接创建、释放频繁造成系统资源浪费
  • Sql语句在代码中硬编码,造成代码不易维护
  • 对结果集解析存在硬编码(查询列名)
  • 使⽤preparedStatement向占有位符号传参数存在硬编码 下一节更新怎么解决这些问题。从原理出发,为什么市面上会出现各种orm映射框架?