`

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;
}

}
分享到:
评论

相关推荐

    Spring3 JDBC 通用DAO封装2 dao层终于完成dao层大概上传完整代码

    本篇将围绕“Spring3 JDBC通用DAO封装”这一主题展开,介绍如何实现一个高效的DAO层,并分享相关代码示例。 1. **Spring3 JDBC概述** Spring3 JDBC通过提供JdbcTemplate和SimpleJdbcInsert等工具类,帮助开发者...

    spring-jdbc-dao

    2. Spring JDBC封装:Spring JDBC通过Template类(如JdbcTemplate)对JDBC进行了高度抽象和封装,减少了代码量,提高了代码的可读性和可维护性。 二、Spring JDBC DAO设计 1. DAO模式:DAO模式是一种设计模式,用于...

    ifunsu封装基于springjdbc的dao层

    ifunsu封装基于springjdbc的dao层,具体用法请看本站博客http://blog.csdn.net/ifunsu 。

    ifunsu封装基于springjdbc的dao层api

    标题"ifunsu封装基于springjdbc的dao层api"指的是一个特定的项目或库,名为ifunsu,它已经对Spring JDBC进行了封装,以创建更易用的数据访问对象(DAO)层API。DAO层是应用程序中负责与数据库进行交互的部分,通常...

    Mybatis通用DAO设计封装(mybatis)

    Mybatis通用DAO设计封装主要涉及的是在Java开发中如何高效地使用Mybatis框架进行数据库操作。Mybatis是一款轻量级的持久层框架,它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过提供自定义SQL、存储...

    spring对jdbc的支持jar包

    1. **JdbcTemplate**:这是Spring JDBC的基础组件,它通过模板方法模式封装了常见的JDBC操作,如执行SQL查询、更新、存储过程等。使用JdbcTemplate,开发者无需手动管理数据库连接、预编译语句、结果集转换等细节,...

    JDBC_DAO设计思想与搭建骨架, 结合Service层讲解DAO层的异常处理

    在Service层,我们通常使用Spring框架提供的`@Service`注解标记服务类,并通过`@Autowired`注解自动注入DAO实例。此外,我们可以自定义一个`ServiceException`来封装业务层的错误信息,以便于客户端更好地理解和处理...

    jdbc+dao:连接oracle

    在JDBC+DAO模式中,DAO类封装了对数据库的所有操作,使业务逻辑代码与数据访问代码分离,提高了代码的可维护性和可测试性。 连接Oracle数据库的基本步骤如下: 1. **加载驱动**:使用`Class.forName()`方法加载...

    JDBC-DAO实例

    DAO(Data Access Object)模式是一种设计模式,用于封装对数据库的所有访问,使得业务逻辑层与数据访问层解耦,提高代码的可重用性和可维护性。本实例将详细介绍如何使用JDBC和DAO模式来实现数据库操作。 首先,...

    Spring对DAO的支持.doc

    本文将从三个方面探讨Spring对DAO的支持:传统模式的DAO,Spring对JDBC的DAO支持,以及Spring对Hibernate的DAO支持。 ### 1. 传统DAO模式 在传统的DAO模式中,通常需要实现以下几个组件: - **DAO工厂**:创建DAO...

    Spring mvc + Spring + Spring jdbc 整合 demo

    3. **Service层**:Service层是业务逻辑的主要承载者,它封装了对DAO层的调用。Service层的接口和实现类可以使用Spring的依赖注入来注入DAO。 4. **DAO层**:DAO(Data Access Object)层负责与数据库的交互,通常...

    spring.jdbc-3.0.5.jar

    其中,Spring JDBC模块是Spring框架的重要组成部分,它提供了一种抽象层,使得开发者能够更方便地与数据库进行交互。本文将详细探讨Spring JDBC-3.0.5.jar中的核心概念、功能和使用技巧。 1. **Spring JDBC的核心...

    spring几种Dao支持配置

    在Spring框架中,DAO(Data Access Object)层是应用程序与数据库交互的核心部分。Spring提供了多种方式来支持DAO的配置,使得开发人员可以灵活地选择最适合项目需求的数据访问策略。以下将详细阐述Spring对DAO支持...

    spring的持久层封装

    标题:“spring的持久层封装” 描述:“spring持久层封装,新手可用,物超所值” 标签:“spring” 根据给定的文件信息,我们将深入探讨Spring框架中持久层封装的概念、重要性和具体实现方式。 ### 一、Spring...

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合

    2. **分层设计**:Spring框架支持分层的设计模式,这意味着不同的业务功能可以被封装在不同的层中,例如Web层负责处理用户界面,Service层处理业务逻辑,DAO层处理数据访问。这样的设计有助于保持代码的清晰度,并...

    struts1+spring2.5.6+jdbc配置

    Struts1、Spring 2.5.6 和 JDBC 是经典的Java Web开发技术组合,它们各自在应用程序架构中扮演着不同的角色。Struts1是MVC(Model-View-Controller)框架,Spring则是一个全面的轻量级应用框架,而JDBC(Java ...

    Spring mvc + Spring + Spring jdbc 整合实例源码

    《Spring MVC + Spring + Spring JDBC 整合实例详解》 在Java Web开发中,Spring框架因其强大的功能和灵活的设计而备受推崇。Spring MVC、Spring核心模块以及Spring JDBC是Spring框架中的三大重要组成部分,它们...

    使用Spring实现DAO模式

    通过这种方式,上层的应用程序可以无需直接处理复杂的数据库操作,只需调用DAO层提供的接口即可完成数据交互。 #### 2. Spring框架的支持 Spring框架提供了丰富的特性来支持DAO模式的实现,包括但不限于: - **...

    Spring DAO

    1. **异常封装**:Spring对JDBC API抛出的运行时异常进行了统一的封装,转换为一种通用的`DataAccessException`异常层次结构。这种方式允许开发者更专注于业务逻辑的处理,而不是复杂的错误处理逻辑。 2. **模板类...

    spring-jdbc-1.0.723.zip_daooperations.class_spring jdbc

    Spring JDBC是Spring框架的一个核心模块,它为Java开发者提供了对JDBC(Java Database Connectivity)的高级封装,使得数据库访问变得更加简单、易管理。在“spring-jdbc-1.0.723.zip”这个压缩包中,我们关注的是...

Global site tag (gtag.js) - Google Analytics