在数据库初级阶段,通过连接池连接数据库,然后在将查询的结果转换为对象,过程太过复杂,以下便是实现对此类过程的简单封装,另外可以根据此类的封装,简单的理解一下spring 中jdbcTemplate的query()和update()方法。 public class dbUtils<T> { private DataSource dataSource; public dbUtils(DataSource dataSource) { this.dataSource = dataSource; } public dbUtils() { } //增删改查 public int update(String sql, Object... para) { Connection connection = null; PreparedStatement statement = null; int i = 0; try { connection = dataSource.getConnection(); statement = connection.prepareStatement(sql); for (int j= 0; j< para.length; j++) { statement.setObject(j + 1, para[j]); } i = statement.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } return i; } //查询 public <T> T query(String sql, ClassChange<T> change, Object... para) { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet =null; try { connection = dataSource.getConnection(); statement = connection.prepareStatement(sql); for (int i = 0; i < para.length; i++) { statement.setObject(i + 1, para[i]); } resultSet = statement.executeQuery(); return change.change(resultSet); } catch (Exception e) { e.printStackTrace(); }finally { if (resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if (statement!=null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } return null; } } interface ClassChange<T> { T change(ResultSet result); }
//测试
public class Test { @org.junit.Test public void dbTest(){ dbUtils<User> dbUtils=new dbUtils(JdbcUtil.getDataSource()); String sql="select * from user where username=?"; User user= dbUtils.query(sql,(result)-> { User user1=new User(); try { while(result.next()){ user1.setUsername(result.getString("username")); user1.setPassword(result.getString("password")); } } catch (SQLException e) { e.printStackTrace(); } return user1; },"张全蛋"); System.out.println(user.getUsername()); } }