code: public List<Object[]> select(Sql sql) throws SQLException {
  		
  		long start =  System.currentTimeMillis();
  		
  		if (sql.validate() == false) {
  			return null;
  		}
  		
  		List<Object[]> dataList = null;
  		
  		if (sql.isSelect()) {
  			
  			ResultSet rs = null;
  			PreparedStatement stmt = null;
  
  			try {
  				stmt = this.createStatment(conn, sql);
  				rs = stmt.executeQuery();
  				
  				dataList = getResultSet(rs);
  
  			} catch (SQLException e) {
  				throw e;
  			} finally {
  				try {
  					if (rs != null && rs.isClosed() == false) {
  						rs.close();
  					}
  					if (stmt != null && stmt.isClosed() == false) {
  						stmt.close();
  					}
  				} catch (SQLException e) {
  					throw e;
  				}
  			}
  		}
  		
  		logger.debug(String.format("Execute %s used %d ms", sql.getSql(), System.currentTimeMillis() - start));
  		
  		return dataList;
  	}
docs: 执行SQL查询
  
  @param sql 需要执行的查询SQL语句对象
  
  @return 查询结果列表
  
  @throws SQLException SQL执行异常