/*
  * (non-Javadoc)
  *
  * @see
  * com.harmony.framework.dao.mybatis.IBaseGenericDAO#findListBy(java.lang
  * .Object, java.lang.String, java.lang.String)
  */
 @SuppressWarnings("unchecked")
 public List<T> findListBy(T param, String sort, String dir) {
   Map<String, Object> paramMap = null;
   try {
     paramMap = BeanMapUtil.bean2Map(param);
   } catch (Exception e) {
     throw new BaseDaoException("获取参数失败", e);
   }
   // Where过滤条件
   // paramMap.put("param", param);
   // 排序条件
   if (sort != null) {
     // 排序字段不为空,过滤其中可能存在的非法字符
     sort = filterIllegalChars(sort, ILLEGAL_CHARS_FOR_SQL);
   }
   if (StringUtils.isEmpty(sort) || StringUtils.isEmpty(dir)) {
     // paramMap.put("sort", null);
     // paramMap.put("dir", null);
   } else {
     paramMap.put(SORT_NAME, sort);
     paramMap.put(DIR_NAME, dir);
   }
   List<T> lst = this.getSqlSession().selectList(getSqlName(SQL_FINDLISTBY), paramMap);
   return lst;
 }
 /*
  * (non-Javadoc)
  *
  * @see
  * com.harmony.framework.dao.mybatis.IBaseGenericDAO#getCountBy(java.lang
  * .Object)
  */
 @SuppressWarnings("unchecked")
 public Integer getCountBy(T param) {
   Map<String, Object> paramMap = null;
   try {
     paramMap = BeanMapUtil.bean2Map(param);
   } catch (Exception e) {
     throw new BaseDaoException("获取参数失败", e);
   }
   // paramMap.put("param", param);
   return (Integer) this.getSqlSession().selectOne(getSqlName(SQL_GETCOUNTBY), paramMap);
 }
  /*
   * (non-Javadoc)
   *
   * @see
   * com.harmony.framework.dao.mybatis.IBaseGenericDAO#findPageBy(java.lang
   * .Object, int, int, java.lang.String, java.lang.String)
   */
  @SuppressWarnings("unchecked")
  public IGenericPage<T> findPageBy(T param, int pageNo, int pageSize, String sort, String dir) {

    // 获取满足条件的记录总数,没有记录时返回空页数据
    int count = getCountBy(param);
    if (count < 1) {
      return GenericDefaultPage.emptyPage();
    }

    Map<String, Object> paramMap = null;
    try {
      paramMap = BeanMapUtil.bean2Map(param);
    } catch (Exception e) {
      throw new BaseDaoException("获取参数失败", e);
    }
    // Where过滤条件
    // paramMap.put("param", param);
    // 排序条件
    if (sort != null) {
      // 排序字段不为空,过滤其中可能存在的非法字符
      sort = filterIllegalChars(sort, ILLEGAL_CHARS_FOR_SQL);
    }
    if (StringUtils.isEmpty(sort) || StringUtils.isEmpty(dir)) {
      // paramMap.put("sort", null);
      // paramMap.put("dir", null);
    } else {
      paramMap.put(SORT_NAME, sort);
      paramMap.put(DIR_NAME, dir);
    }
    // 分页条件
    int start = GenericDefaultPage.getStartOfPage(pageNo, pageSize) - 1;
    RowBounds rowBound = new RowBounds(start, pageSize);

    List<T> lst = this.getSqlSession().selectList(getSqlName(SQL_FINDPAGEBY), paramMap, rowBound);

    return new GenericDefaultPage<T>(pageNo, pageSize, lst, count);
  }