`

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层是应用程序中负责与数据库进行交互的部分,通常...

    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几种Dao支持配置

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

    Spring提供了JdbcTemplate类,它是Spring对JDBC的轻量级封装,使得数据库操作变得更加简洁和安全。本篇文章将详细探讨Spring对JDBC的支持,包括如何使用JdbcTemplate进行数据库的更新和查询,以及如何实现具名参数的...

    Spring支持DAO需要的jar包

    1. **Spring JDBC支持**:Spring通过JDBC抽象层提供了模板类JdbcTemplate和NamedParameterJdbcTemplate,它们封装了常见的JDBC操作,如执行SQL查询、更新、事务管理等,大大减少了手动处理结果集和异常的工作。...

    springMVC+springJDBC

    3. **Service**:如 `UserService.java`,封装了与数据库交互的业务逻辑,使用 Spring JDBC 进行数据访问。 4. **DAO(Data Access Object)**:如 `UserDAO.java`,通过 JdbcTemplate 或者 ...

    Hibernate 原生通用DAO

    **Hibernate原生通用DAO**是基于Hibernate框架设计的一种简化数据访问操作的方式,它模仿了Spring框架中的`HibernateTemplate`类,旨在提供一个简单易用的DAO(Data Access Object)层,方便开发人员进行数据库操作...

    SpringMVC + Spring + SpringJDBC整合demo

    SpringMVC、Spring和SpringJDBC是Java开发中非常重要的三个框架,它们分别负责Web层、业务层和服务层的管理。这个"SpringMVC + Spring + SpringJDBC整合demo"是一个完整的示例项目,旨在帮助开发者理解如何将这三个...

    Spring_jdbc模板相关jar包

    这个"Spring_jdbc模板相关jar包"包含了Spring框架中用于与关系型数据库交互的核心库,使得开发者无需直接使用JDBC API,而是通过更高级、更抽象的API来完成数据访问。 首先,Spring JDBC模块包含了一个名为`...

    SpringJDBC入门Demo

    Spring JDBC是Spring框架的一部分,它提供了一种抽象层,简化了Java数据库编程。这个入门Demo将引导我们了解如何使用Spring JDBC来与数据库进行交互。在本文中,我们将深入探讨Spring JDBC的核心概念、基本操作以及...

Global site tag (gtag.js) - Google Analytics