Spring3 JDBC 通用DAO封装1目前正在完成dao层 后续不断更新

部分代码是借鉴其他博客
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.dahua.core;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.dahua.core.page.Pager;



/**
* 基于Spring3 JDBC
* User: szj
* Date: 2012-04-01
* Time: 14:09:44
* BaseDAO 数据库连接基础类
*/

public interface BaseDao<T, ID extends Serializable> {


    public Number saveAndReturnKey(Saveable objForSave);
    public Number saveAndReturnKey(Object objForSave,String tableName,String...keyColumns);
    public Number saveAndReturnKey(String tableName,Map<String,Object> columnAndValue,String...keyColumns);
    public int addList(Collection<T> entityCollection, Class<T> entityClazz);  
    public int delete(T entity);
    public int deleteList(Collection<T> entityCollection, Class<T> entityClazz);  
    public void update(T entity);
    public int updateList(Collection<T> entityCollection, Class<T> entityClazz);  
    public void saveOrUpdate(T entity);
    public List<T> getList(String sql,Class<T> entityClazz);
    public List<T> getListAll(Class<T> entityClazz);
    public List<T> getPageList( String hSql,Class<T> entityClazz, Pager pager);
    /**
   * 按某个字段查找
   * @param sql 
   * @param columnName
   * @param value
   * return 返回List
   */ 
public List<T> findBycolumnNameList(Class<T> entityClazz, String columnName, Object value);
/**
   * 按某个字段查找
   * @param sql 
   * @param columnName
   * @param value
   * return 返回T
   */  
public T findBycolumnName(Class<T> entityClazz, String columnName, Object value);
/**
   * 按id查找
   * @param sql 
   * @param columnName
   * @param value
   * return 返回T
   */ 
public T findByid(Class<T> entityClazz,  Object value);
/**
   * 统计总数
   * @param sql 
   */ 
public int countAll(String sql);
/**
   * 删除数据的方法
   * @param sql
   * @param columns
   */ 
    public void delete(String sql,String columns);
    public int deleteById(Class<T> entityClazz, ID id);
    public void update(String sql);
    public void update(String sql,T entity);
 
 
}
package com.dahua.core;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;


import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.BeanPropertyRowMapper;

import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;

import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import com.dahua.core.page.LimitPageHepler;
import com.dahua.core.page.Pager;
/**
* 基于Spring3 JDBC
* User: szj
* Date: 2012-04-01
* Time: 14:09:44
* BaseDAO 数据库连接基础类
*/




public   class BaseDaoImpl<T, PK extends Serializable> extends JdbcDaoSupport implements BaseDao<T, PK>{
   
protected Class<T> entityClass;// DAO所管理的Entity类型.
public void setEntityClass(Class<T> type){//注入实体类型
this.entityClass=type;
}
public Class<T> getEntityClass(){
return this.entityClass;
}

public BaseDaoImpl(){}
public BaseDaoImpl(Class<T> entityClass){this.entityClass = entityClass;}

/**
* 添加 ,属性和数据库字段名一致,返回主键
* @param objForSave ,继承Saveable 的接口的类
* @return
*/
public Number saveAndReturnKey(Saveable objForSave){
return saveAndReturnKey(objForSave, objForSave.getTableName(), objForSave.getKeyColumns());
}
/**
* 添加实体,返回主键
* @param objForSave
* @param tableName
* @param columnAndValue
* @param keyColumns
* @return
*/
public Number saveAndReturnKey(Object objForSave,String tableName,String...keyColumns){
SimpleJdbcInsert insertActor =   getSimpleJdbcInsert();
insertActor.setTableName(tableName);
insertActor.usingGeneratedKeyColumns(keyColumns);
Number newId = insertActor.executeAndReturnKey(new BeanPropertySqlParameterSource(objForSave)) ;
traceSql(insertActor.getInsertString());
return newId;
}
/**
* @param objForSave 插入数据库的类
* @param tableName
* @param keyColumns
* @return
*/
public void save(Saveable objForSave){
SimpleJdbcInsert insertActor =   getSimpleJdbcInsert();
insertActor.setTableName(objForSave.getTableName());
insertActor.execute(new BeanPropertySqlParameterSource(objForSave)) ;
traceSql(insertActor.getInsertString());
}
/**
* @param objForSave 插入数据库的类,注意
* @param tableName
* @param keyColumns
* @return
*/
public void save(Object objForSave,String tableName){
SimpleJdbcInsert insertActor =   getSimpleJdbcInsert();
insertActor.setTableName(tableName);
insertActor.execute(new BeanPropertySqlParameterSource(objForSave)) ;
traceSql(insertActor.getInsertString());
}
/**
*
* @param objForSave 插入数据库的类
* @param tableName
* @param keyColumns
* @return
*/
public void save(Object objForSave,String tableName,String...keyColumns){
SimpleJdbcInsert insertActor =   getSimpleJdbcInsert();
insertActor.setTableName(tableName);
insertActor.execute(new BeanPropertySqlParameterSource(objForSave)) ;
traceSql(insertActor.getInsertString());
}
/**
*
* @param objForSave
* @param tableName
* @param columnAndValue
* @param keyColumns
* @return
*/
public Number saveAndReturnKey(String tableName,Map<String,Object> columnAndValue,String...keyColumns){
SimpleJdbcInsert insertActor =   getSimpleJdbcInsert();
insertActor.setTableName(tableName);
insertActor.usingGeneratedKeyColumns(keyColumns);
Number newId = insertActor.executeAndReturnKey(columnAndValue) ;
traceSql(insertActor.getInsertString());
return newId;
}
/**
   * 查询部分
   * @param sql 
   * @param entityClazz
   *  return 返回List
   */ 
public List<T> getList(String sql,Class<T> entityClazz) {
return getJdbcTemplate().query(sql, BeanPropertyRowMapper.newInstance(entityClazz));
}
/**
   * 查询全部
   * @param entityClazz
   *  return 返回List
   */

public List<T> getListAll(Class<T> entityClazz) {
String tableName =  entityClazz.getSimpleName();
String sql = "SELECT * FROM " + tableName;
return getJdbcTemplate().query(sql, BeanPropertyRowMapper.newInstance(entityClazz));
}

/**
   * 按某个字段查找
   * @param sql 
   * @param columnName
   * @param value
   * return 返回List
   */ 
public List<T> findBycolumnNameList(Class<T> entityClazz, String columnName, Object value) {
String tableName =  entityClazz.getSimpleName();
String sql = "SELECT * FROM " + tableName + " WHERE "+columnName+"=?";
return getJdbcTemplate().query(sql, BeanPropertyRowMapper.newInstance(entityClazz),value);
}
/**
   * 按某个字段查找
   * @param sql 
   * @param columnName
   * @param value
   * return 返回T
   */  
public T findBycolumnName(Class<T> entityClazz, String columnName, Object value) {
String tableName =entityClazz.getSimpleName();
String sql = "SELECT * FROM " + tableName + " WHERE "+columnName+"=?";
return (T)getJdbcTemplate().queryForObject(sql, BeanPropertyRowMapper.newInstance(entityClazz),value);
}

/**
   * 按id查找
   * @param sql 
   * @param columnName
   * @param value
   * return 返回T
   */ 
public T findByid(Class<T> entityClazz,  Object value) {
String tableName =entityClazz.getSimpleName();
String sql = "SELECT * FROM " + tableName + " WHERE id=?";
return (T)getJdbcTemplate().queryForObject(sql, BeanPropertyRowMapper.newInstance(entityClazz),value);
}
/**
   * 统计总数
   * @param sql 
   */ 
public int countAll(String sql) { 
      return getJdbcTemplate().queryForInt(sql); 


/**
   * 删除数据的方法
   * @param sql
   * @param columns
   */ 
    public void delete(String sql,String columns){ 
    getJdbcTemplate().update(sql, columns); 
}
    /**
   * 按ID删除数据的方法
   * @param sql
   * @param columns
*/ 
    public int deleteById(Class<T> entityClazz, PK id) {
String tableName = entityClazz.getSimpleName();
String sql = "DELETE FROM " + tableName + " WHERE id=?";
return getJdbcTemplate().update(sql, id);
}
    /**
   * 批量删除数据的方法
   * @param sql
   * @param columns
*/
    public int deleteList(String sql,String columns) {

/*String tableName = entityClazz.getSimpleName();
String sql = "DELETE FROM " + tableName + " WHERE id=:id";
List<T> list= entityCollection.ArrayList<T>;
int[] result = getJdbcTemplate().(sql, batchArgs);
return result.length;*/
    return 0;
}
    /**
   * 更新数据的方法
   * @param sql
   * @param T entity
*/ 
public void update(String sql,T entity){ 
    getJdbcTemplate().update(sql,entity);

   /**
   * 更新数据的方法
   * @param sql
*/ 
public void update(String sql){ 
    getJdbcTemplate().update(sql);



//----tools
public SimpleJdbcInsert getSimpleJdbcInsert(){
return new  SimpleJdbcInsert(getJdbcTemplate());
}
public SimpleJdbcInsert getSimpleJdbcInsert(String tableName){
return new   SimpleJdbcInsert(getJdbcTemplate());
}
public void traceSql(String sql){
System.out.println("JDBC:"+sql);
}
public int addList(Collection<T> entityCollection, Class<T> entityClazz) {
// TODO Auto-generated method stub
return 0;
}

public int delete(T entity) {
  // String tableName = this.TABLE_PREFIX + entity.getClass().getSimpleName();  
       // String sql = "DELETE FROM " + tableName + " WHERE id =:id";  
String sql="";
        return getJdbcTemplate().update(sql, new BeanPropertySqlParameterSource(entity));
}
public int deleteList(Collection<T> entityCollection, Class<T> entityClazz) {
  //String tableName = this.TABLE_PREFIX + entityClazz.getSimpleName();  
     // String sql = "DELETE FROM " + tableName + " WHERE id=:id";  
String sql="";
      int[] result =  getJdbcTemplate().batchUpdate(sql, (BatchPreparedStatementSetter) entityCollection);  
      return result.length;  
}
public List<T> getPageList(String sql, Class<T> entityClazz,Pager pager) {
//String tableName =  entityClazz.getSimpleName();
//String sql = "SELECT * FROM " + tableName;
sql=LimitPageHepler.getLimitPage(sql, pager);
return getJdbcTemplate().query(sql, BeanPropertyRowMapper.newInstance(entityClazz));
}
public void saveOrUpdate(T entity) {
// TODO Auto-generated method stub

}
public void update(T entity) {
// TODO Auto-generated method stub

}
public int updateList(Collection<T> entityCollection, Class<T> entityClazz) {
// TODO Auto-generated method stub
return 0;
}

}

猜你喜欢

转载自shizhijian870525.iteye.com/blog/1695225