public List<Map<String, Object>> selectBySQL(SQLSelectOperation sqlSelect) throws SQLException {
		Assert.isNotNull(sqlSelect);
		if(isShowSQL)
			System.out.println(sqlSelect.getSql());
		PreparedStatement ps = sqlSelect.getConn().prepareStatement(sqlSelect.getSql());
		if(sqlSelect.getParams()!=null){
			if(sqlSelect.getTypes()!=null && sqlSelect.getTypes().length!=sqlSelect.getParams().length){
				throw new IllegalArgumentException("the length of two arguements is not same!");
			}else if(sqlSelect.getTypes()!=null){
				for(int i=0,size=sqlSelect.getParams().length; i<size; i++){
					if(sqlSelect.getTypes()[i] != Types.OTHER)
						ps.setObject(i+1, sqlSelect.getParams()[i],sqlSelect.getTypes()[i]);
					else
						ps.setObject(i+1, sqlSelect.getParams()[i]);
				}
			}else{
				for(int i=0,size=sqlSelect.getParams().length; i<size; i++){
					ps.setObject(i+1, sqlSelect.getParams()[i]);
				}
			}
		}
        // 执行查询并返回离线结果集
        ResultSet rs = ps.executeQuery();
        List<Map<String, Object>> data = parseResultSet(rs);
        rs.close();
        return data;
	}