代码演示
<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映射框架?