Package edu.zzuli.model.dao

Source Code of edu.zzuli.model.dao.BaseDaoEntity

package edu.zzuli.model.dao;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.stereotype.Repository;
import org.springframework.util.Assert;

import edu.zzuli.common.MisException;
import edu.zzuli.common.Pagination;
import edu.zzuli.model.dao.hibernate.HibernateDao;
import edu.zzuli.util.MyColumnMapRowMapper;
import edu.zzuli.util.PaginationUtil;
import edu.zzuli.util.StringUtils;

/**
* @author tianshaojie
* @date 2010-11-11
* @discription :
*/

@Repository("baseDaoEntity")
public class BaseDaoEntity {
 
  @Resource
  private HibernateDao hibernateDao;
 
  @Resource
  private JdbcTemplate jdbcTemplate;

  @Resource
  private NamedParameterJdbcTemplate paraJdbcTemplate;
 
  protected final transient Log logger = LogFactory.getLog(getClass());
 
  public HibernateDao getHibernateDao() {
    return hibernateDao;
  }

  public JdbcTemplate getJdbcTemplate() {
    return jdbcTemplate;
  }

  public NamedParameterJdbcTemplate getParaJdbcTemplate() {
    return paraJdbcTemplate;
  }
 
  public BasePO save(BasePO paramBasePO) {
    Assert.notNull(paramBasePO);
    hibernateDao.save(paramBasePO);
    return paramBasePO;
  }

  public int saveAll(List<BasePO> paramList) {
    Assert.notNull(paramList);
    return hibernateDao.save(paramList);
  }

  public BasePO update(BasePO paramBasePO) {
    Assert.notNull(paramBasePO);
    hibernateDao.update(paramBasePO);
    return paramBasePO;
  }

    /**
   * 根据主键值查询PO
   *
   * @param basePO
   * @return
   */
  public BasePO selectSingle(BasePO basePO) {
    if (basePO == null)
      return null;
    return this.hibernateDao.selectSingle(basePO);
  }

  /**
   * 根据sbWhere条件返回唯一PO,符合条件的有多个时返回第一个
   *
   * @param basePO
   * @param sbWhere
   * @return
   */
  public BasePO selectSingle(BasePO basePO, StringBuffer sbWhere) {
    try {
      BasePO resultPO = null;
      List<BasePO> listBasePO = this.hibernateDao.selectExact(basePO, sbWhere);
      if (listBasePO.size() > 0) {
        resultPO = listBasePO.get(0);
      }
      return resultPO;
    } catch (MisException e) {
      e.printStackTrace();
      throw e;
    } catch (Exception e) {
      e.printStackTrace();
      throw new MisException("[BaseDaoEntity.selectSingle]异常!", e);
    }
  }

  /**
   * 根据sql返回唯一一条记录,符合条件的有多个时返回第一个,没有则为null
   * @param basePO
   * @param sbWhere
   * @return
   */
  @Deprecated
  public Map selectSingleMap(String sql) {
    try {
      if (StringUtils.isEmpty(sql)) {
        throw new MisException("sql语句为空!");
      }
      List<Map> listMap = this.jdbcTemplate.query(sql, MyColumnMapRowMapper.newInstance());
      if (listMap.size() > 0) {
        return listMap.get(0);
      } else {
        return null;
      }
    } catch (MisException e) {
      e.printStackTrace();
      throw e;
    } catch (Exception e) {
      e.printStackTrace();
      throw new MisException("[BaseDaoEntity.selectSingleMap]异常!", e);
    }
  }

  public Map selectSingleMap(String sql, Map map) {
    try {
      if (StringUtils.isEmpty(sql)) {
        throw new MisException("sql语句为空!");
      }
      List<Map> listMap = this.paraJdbcTemplate.query(sql, map, MyColumnMapRowMapper.newInstance());
      if (listMap.size() > 0) {
        return listMap.get(0);
      } else {
        return null;
      }
    } catch (MisException e) {
      throw e;
    } catch (Exception e) {
      throw new MisException("[BaseDaoEntity.selectSingleMap]异常!", e);
    }
  }

  public Map selectSingleMap(String sql, MapSqlParameterSource map) {
    try {
      if (StringUtils.isEmpty(sql)) {
        throw new MisException("sql语句为空!");
      }
      List<Map> listMap = this.paraJdbcTemplate.query(sql, map, MyColumnMapRowMapper.newInstance());
      if (listMap.size() > 0) {
        return listMap.get(0);
      } else {
        return null;
      }
    } catch (MisException e) {
      throw e;
    } catch (Exception e) {
      throw new MisException("[BaseDaoEntity.selectSingleMap]异常!", e);
    }
  }

  public Map selectSingleMap(String sql, BeanPropertySqlParameterSource bean) {
    try {
      if (StringUtils.isEmpty(sql)) {
        throw new MisException("sql语句为空!");
      }
      List<Map> listMap = this.paraJdbcTemplate.query(sql, bean, MyColumnMapRowMapper.newInstance());
      if (listMap.size() > 0) {
        return listMap.get(0);
      } else {
        return null;
      }
    } catch (MisException e) {
      throw e;
    } catch (Exception e) {
      throw new MisException("[BaseDaoEntity.selectSingleMap]异常!", e);
    }
  }

  @Deprecated
  public String queryForString(String sql) {
    Map<String, Object> map = this.selectSingleMap(sql);
    if (map == null) {
      return null;
    } else {
      Object obj = null;
      for (Map.Entry<String, Object> entry : map.entrySet()) {
        obj = entry.getValue();
        break;
      }
      if (obj == null) {
        return null;
      } else {
        return obj.toString();
      }
    }
  }

  public String queryForString(String sql, Map mapPara) {
    Map<String, Object> map = this.selectSingleMap(sql, mapPara);
    if (map == null) {
      return null;
    } else {
      Object obj = null;
      for (Map.Entry<String, Object> entry : map.entrySet()) {
        obj = entry.getValue();
        break;
      }
      if (obj == null) {
        return null;
      } else {
        return obj.toString();
      }
    }
  }

  public String queryForString(String sql, MapSqlParameterSource mapPara) {
    Map<String, Object> map = this.selectSingleMap(sql, mapPara);
    if (map == null) {
      return null;
    } else {
      Object obj = null;
      for (Map.Entry<String, Object> entry : map.entrySet()) {
        obj = entry.getValue();
        break;
      }
      if (obj == null) {
        return null;
      } else {
        return obj.toString();
      }
    }
  }

  public String queryForString(String sql, BeanPropertySqlParameterSource bean) {
    Map<String, Object> map = this.selectSingleMap(sql, bean);
    if (map == null) {
      return null;
    } else {
      Object obj = null;
      for (Map.Entry<String, Object> entry : map.entrySet()) {
        obj = entry.getValue();
        break;
      }
      if (obj == null) {
        return null;
      } else {
        return obj.toString();
      }
    }
  }

  @Deprecated
  public List queryForList(String sql) {
    try {
      if (StringUtils.isEmpty(sql)) {
        throw new MisException("sql语句为空!");
      }
      return this.jdbcTemplate.query(sql, MyColumnMapRowMapper.newInstance());
    } catch (MisException e) {
      e.printStackTrace();
      throw e;
    } catch (Exception e) {
      e.printStackTrace();
      throw new MisException("[BaseDaoEntity.queryForList]异常!", e);
    }
  }

  public List queryForList(String sql, Map map) {
    try {
      if (StringUtils.isEmpty(sql)) {
        throw new MisException("sql语句为空!");
      }
      if (map == null) {
        throw new MisException("查询参数为null!");
      }
      return this.paraJdbcTemplate.query(sql, map, MyColumnMapRowMapper.newInstance());
    } catch (MisException e) {
      throw e;
    } catch (Exception e) {
      throw new MisException("[BaseDaoEntity.queryForList]异常!", e);
    }
  }

  public List queryForList(String sql, MapSqlParameterSource paramMap) {
    try {
      if (StringUtils.isEmpty(sql)) {
        throw new MisException("sql语句为空!");
      }
      if (paramMap == null) {
        throw new MisException("查询参数为null!");
      }
      return this.paraJdbcTemplate.query(sql, paramMap, MyColumnMapRowMapper.newInstance());
    } catch (MisException e) {
      throw e;
    } catch (Exception e) {
      throw new MisException("[BaseDaoEntity.queryForList]异常!", e);
    }
  }

  public List queryForList(String sql, BeanPropertySqlParameterSource bean) {
    try {
      if (StringUtils.isEmpty(sql)) {
        throw new MisException("sql语句为空!");
      }
      if (bean == null) {
        throw new MisException("查询参数为null!");
      }
      return this.paraJdbcTemplate.query(sql, bean, MyColumnMapRowMapper.newInstance());
    } catch (MisException e) {
      throw e;
    } catch (Exception e) {
      throw new MisException("[BaseDaoEntity.queryForList]异常!", e);
    }
  }

  /**
   *@author tianshaojie
   *@date 2008-10-11
   *@discription : (JDBC)增加记录
   *@param po void
   */
  public void jdbcInsert(BasePO po) {
    this.getJdbcTemplate().update(new StringBuffer("insert into ").append(po.getStrTableName()).append(" (").append(po.getStrFields()).append(") values (").append(po.getStrInsValues()).append(")").toString());
  }

  /**
   *@author tianshaojie
   *@date 2008-10-11
   *@discription : (JDBC)修改记录
   *@param po void
   */
  public void jdbcUpdate(BasePO po) {
    this.getJdbcTemplate().update(new StringBuffer("update ").append(po.getStrTableName()).append(" set ").append(po.getStrUpdValues()).append(" where ").append(po.getStrKeyWhere()).toString());
  }
  /**
   * @author tianshaojie
   * @discription : (JDBC)批量更新
   * @param listPO
   */
  public void jdbcBatchUpdate(List<BasePO> listPO) {
    List<String> listBatchSql = new ArrayList<String>();
    for (BasePO po:listPO) {
      listBatchSql.add(new StringBuffer("update ").append(po.getStrTableName()).append(" set ").append(po.getStrUpdValues()).append(" where ").append(po.getStrKeyWhere()).toString());
    }
    this.jdbcTemplate.batchUpdate(listBatchSql.toArray(new String[] {}));
  }

  /**
   *@author tianshaojie
   *@date 2008-10-11
   *@discription : (JDBC)删除记录
   *@param po void
   */
  public void jdbcDelete(BasePO po) {
    this.getJdbcTemplate().update(new StringBuffer("delete ").append(po.getStrTableName()).append(" where ").append(po.getStrKeyWhere()).toString());
  }
 
  /**
   * @author tianshaojie
   * @date 2011-7-16
   * @discription : (JDBC)通过SQL获得分页结果集
   * @param sql
   * @param pagination
   * @return List<Map<String,Object>>
   */
  public List<Map<String, Object>> selectSplit(String sql, Pagination pagination) {
    StringBuffer strCountSql = new StringBuffer("select count(*) from (").append(sql).append(")");
    int count = jdbcTemplate.queryForInt(strCountSql.toString());
    pagination.setTotalRows(count);//总记录条数返回给Pagination类
    String strSql = PaginationUtil.getLimitString(sql, pagination.getCurrentPage(), pagination.getPageRowBegin(), pagination.getPageRowEnd());
    return jdbcTemplate.query(strSql, MyColumnMapRowMapper.newInstance());
  }

  /**
   * @author tianshaojie
   * @date 2011-7-16
   * @discription : (JDBC)通过带参数SQL获得分页结果集
   * @param sql
   * @param parameterSource
   * @param pagination
   * @return List<Map<String,Object>>
   */
  public List<Map<String, Object>> selectSplit(String sql, SqlParameterSource parameterSource, Pagination pagination) {
    StringBuffer strCountSql = new StringBuffer("select count(*) from (").append(sql).append(")");
    int count = paraJdbcTemplate.queryForInt(strCountSql.toString(), parameterSource);
    pagination.setTotalRows(count);//总记录条数返回给Pagination类
    String strSql = PaginationUtil.getLimitString(sql, pagination.getCurrentPage(), pagination.getPageRowBegin(), pagination.getPageRowEnd());
    return paraJdbcTemplate.query(strSql, parameterSource, MyColumnMapRowMapper.newInstance());
  }

  /**
   * @author tianshaojie
   * @date 2011-7-16
   * @discription : 通过list获得分页结果集(用于无法通过SQL直接得到分页结果的情况)
   * @param list
   * @param pagination
   * @return List
   */
  public List selectSplit(List list, Pagination pagination) {
    pagination.setTotalRows(list == null ? 0 : list.size());
    List result = new ArrayList();
    if (list == null) {
      return null;
    } else {
      for (int i = pagination.getPageRowBegin(); 0 <= i && i < pagination.getPageRowEnd(); i++) {
        result.add(list.get(i));
      }
    }
    return result;
  }
}
TOP

Related Classes of edu.zzuli.model.dao.BaseDaoEntity

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.