Exemple #1
0
  private <T> List<T> query(String sql) {
    List<T> result = null;
    try {

      if (Map.class.isAssignableFrom(this.clazz)) {
        Connection con = ds.getConnection();
        if (args != null && args.size() > 0) {
          result =
              (List<T>) JdbcUtil.getListWithArgs(con, clazz, sql, args.toArray(new Object[] {}));
        } else {
          result = (List<T>) JdbcUtil.getList(con, clazz, sql);
        }

      } else {
        if (args != null && args.size() > 0) {
          result =
              (List<T>)
                  DAOFactory.getSelectDAO(dsName)
                      .selectBySQL(clazz, sql, args.toArray(new Object[] {}));
        } else {
          result = (List<T>) DAOFactory.getSelectDAO(dsName).selectBySQL(clazz, sql);
        }
      }

      // this.clear();
      if (result != null && result.size() > 0) {
        for (T t : result) {
          // ToOne relation class cascade select
          final String[] fields = ORMConfigBeanUtil.getToOneField(t.getClass());
          if (fields == null || fields.length == 0) continue;

          DAOFactory.getCascadeDAO(dsName).select(t, fields);
        }
      }

      return result;
    } catch (Exception e) {
      log.error("sql-->" + sql + "exception:" + StringUtil.getExceptionString(e));
      throw new DAOException(sql + " execute exception", e);
    }
  }