组团学

MyBatis在谈JDBC

阅读 (838332)

1、回顾JDBC

public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //通过驱动管理类获取数据库链接 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root", "root"); //定义 sql 语句 ?表示占位符 String sql = "select * from user where username = ?"; //获取预处理 statement preparedStatement = connection.prepareStatement(sql); //设置参数,第一个参数为 sql 语句中参数的序号(从 1 开始),第二个参数为设置的参数值 preparedStatement.setString(1, "王五"); //向数据库发出 sql 执行查询,查询出结果集 resultSet = preparedStatement.executeQuery(); //遍历查询结果集 while(resultSet.next()){ System.out.println(resultSet.getString("id")+" "+resultSet.getString("username")); } } catch (Exception e) { e.printStackTrace(); }finally{ //释放资源 if(resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if(preparedStatement!=null){ try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } if(connection!=null){ try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } /* 加载驱动 获取连接connection 获取预处理对象statement 设置sql(采用占位符,防止sql注入) 给占位符设置值 执行获取结果集 对结果集进行封装 释放资源 */

2、JDBC遇到的问题

资源浪费:不断的对连接的创建和释放。(连接池可以解决)

代码不易维护:SQL发生变化代码就要发生变化。(

SQL语句发生变化;

如: select * from user; / select * from project;

SQL条件发生变化;

如: select * from user where id=?; / select * from user username=?

查询结果发生变化;

如: select * from user where age>?

需要 登录 才可以提问哦