使用JDBCTemplate实现与Spring结合,方法公用 ——共用实现类(BaseImpl)

简介: 使用JDBCTemplate实现与Spring结合,方法公用 ——共用实现类(BaseImpl)
/**  
* @Title: BaseImpl.java
* @Package org.dao.impl
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com  
* @date 2017-6-6 下午4:12:02
* @version V1.0  
*/
package org.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
 /**   
 *    
 * 项目名称:spring_Cchop10   
 * 类名称:BaseImpl   
 * 类描述:   
 * 创建人:Mu Xiongxiong  
 * 创建时间:2017-6-6 下午4:12:02   
 * 修改人:Mu Xiongxiong   
 * 修改时间:2017-6-6 下午4:12:02   
 * 修改备注:   
 * @version    
 *    
 */
public class BaseImpl<T> {
  private JdbcTemplate jdbcTemplate;   //jdbcTemplate对象
  private Class<T> entityClass;        //将实体类转换成class
  
  /**
   * 
       * 构造函数 
       * @discription 
       * @author Mu Xiongxiong     
       * @created 2017-6-6 下午4:58:40
   */
  @SuppressWarnings("unchecked")
  public BaseImpl() {
    //将T转换成class
    entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
  }
  
  /**
   * 
  * @Title: save
  * @Description: 该方法的主要作用:添加,修改,删除
  * @param  @param sql
  * @param  @param objects 设定文件  
  * @return  返回类型:void   
  * @throws
   */
  public void update(String sql,Object[]objects){
    jdbcTemplate.update(sql, objects);
  }
  
  /**
   * 
  * @Title: getById
  * @Description: 该方法的主要作用:根据id查询信息
  * @param  @param sql
  * @param  @param id 设定文件  
  * @return  返回类型:void   
  * @throws
   */
  public T getById(String sql,Serializable id){
    return  (T) jdbcTemplate.queryForObject(sql,new Object[]{id},new BeanPropertyRowMapper(entityClass));
  }
  
  /**
   * 
  * @Title: getAll
  * @Description: 该方法的主要作用:查询全部
  * @param  @param sql 设定文件  
  * @return  返回类型:void   
  * @throws
   */
  public List<T> getAll(String sql){
    return jdbcTemplate.query(sql, new BeanPropertyRowMapper(entityClass));
  }
  public JdbcTemplate getJdbcTemplate() {
    return jdbcTemplate;
  }
  public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
  }
    /**
     * 创建添加一条员工记录的存储过程
     * CREATE OR REPLACE PROCEDURE add_emp
        (myempno in NUMBER,myename VARCHAR2,myjob VARCHAR2,mymgr NUMBER,mydate DATE,
        mysal NUMBER,mycomm NUMBER)  
        AS  
        BEGIN  
         INSERT INTO emp VALUES(myempno,myename,myjob,mymgr,mydate,mysal,mycomm);  
        END;  
     * 
     * 
     */
    
    @SuppressWarnings("unchecked")
    public Integer testProcedure(final Emp emp) {
        Integer dno    =  jdbcTemplate.execute(new CallableStatementCreator(){
            @Override
            public CallableStatement createCallableStatement(Connection con)
                    throws SQLException {
                String procStr            =            "{call add_emp(?,?,?,?,?,?,?)}";
                CallableStatement   cs                =            con.prepareCall(procStr);
                cs.setInt(1, emp.getEmpno());
                cs.setString(2, emp.getEname());
                cs.setString(3, emp.getJob());
                cs.setInt(4, emp.getMgr());
                cs.setDate(5, (Date) emp.getHiredate());
                cs.setDouble(6, emp.getSal());
                cs.setDouble(7, emp.getComm());
                cs.registerOutParameter(1, OracleTypes.NUMBER);
                return cs;
            }
        }, new CallableStatementCallback(){
            @Override
            public Object doInCallableStatement(CallableStatement cs)
                    throws SQLException, DataAccessException {
                cs.execute();
                return cs.getInt(1);
            }
        })    ;    
        return dno;
    }
 }


目录
相关文章
|
9天前
|
人工智能 JSON 前端开发
Spring Boot解决跨域问题方法汇总
Spring Boot解决跨域问题方法汇总
|
9天前
|
Java Spring 容器
解决Spring的UnsatisfiedDependencyException异常的方法
在Spring开发中,UnsatisfiedDependencyException异常意味着依赖注入失败,影响应用稳定性。该异常由Spring容器在无法满足bean依赖时抛出,常见原因包括bean定义错误、循环依赖、多个候选bean等。解决方法包括:检查bean定义和注入的正确性、解决循环依赖、确认依赖包的兼容性、使用@Qualifier或@Primary注解。通过日志、调试工具和异常对比来定位问题。持续学习Spring框架有助于更好地解决此类异常。
61 1
|
9天前
|
Java Spring
Spring的@Retryable实现方法重试
`@Retryable`注解用于配置异常重试,参数包括:指定异常类型`value`,额外包含异常`include`,排除异常`exclude`,最大尝试次数`maxAttempts`和回退策略`backoff`。可选地,可以用`retryExceptions`列表替换`value`。当重试失败,可使用`@Recover`注解定义恢复逻辑。
20 1
|
9天前
|
Java 微服务 Spring
Spring Boot中获取配置参数的几种方法
Spring Boot中获取配置参数的几种方法
22 2
|
9天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
22 1
|
9天前
|
安全 Java 测试技术
Spring Boot 自动化单元测试类的编写过程
企业开发不仅要保障业务层与数据层的功能安全有效,也要保障表现层的功能正常。但是我们一般对表现层的测试都是通过postman手工测试的,并没有在打包过程中代码体现表现层功能被测试通过。那么能否在测试用例中对表现层进行功能测试呢?答案是可以的,我们可以使用MockMvc来实现它。
53 0
|
XML 前端开发 Java
Spring 最常用的 7 大类注解,史上最强整理!
随着技术的更新迭代,Java5.0开始支持注解。而作为java中的领军框架spring,自从更新了2.5版本之后也开始慢慢舍弃xml配置,更多使用注解来控制spring框架。
|
9天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
65 0
|
9天前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
143 0
|
9天前
|
存储 JSON Java
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
50 2