@SuppressWarnings("unchecked")
	public List<Map<String, Object>> execXmlSqlQuery(String id, Page page, Object... obj) throws BasException {
		ResultSet result = null;
		Object[] rst = null;
		List<Map<String, Object>> mapRs = null;
		try {
			if (page != null) {
				rst = JdbcSqlXmlDaoTemplate.getXmlSqlById(id, page);
			} else {
				rst = JdbcSqlXmlDaoTemplate.getXmlSqlById(id);
			}

			con = connMgr.getConnection("");
			log.debug("Thread No[" + Thread.currentThread().getId() + "]," + "SQL Connection[ " + con + " ], Where[execXmlSqlQuery]");
			preStmt = con.prepareStatement((String) rst[0]);
			int count = 1;
			for (Object par : obj) {
				String typeName = par.getClass().getSimpleName();
				Class<?> clz = par.getClass();
				if ("Integer".equals(typeName)) {
					typeName = "int";
					clz = int.class;
				} else if ("Double".equals(typeName)) {
					typeName = "double";
					clz = double.class;
				} else if ("Float".equals(typeName)) {
					typeName = "float";
					clz = float.class;
				} else if ("Long".equals(typeName)) {
					typeName = "long";
					clz = long.class;
				}

				preStmt.getClass().getMethod(JdbcUtil.getSetterMethodName(typeName), int.class, clz).invoke(preStmt, count, par);
				count++;
			}
			result = preStmt.executeQuery();
			mapRs = JdbcUtil.resultSet2Map(result, (Vector<String>) rst[1]);
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			throw new BasException(BasErrCode.E10014, id, page.toString(), obj.toString());
		} finally {
			close(result);
		}
		return mapRs;
	}