/**
* @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转换成classentityClass = (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;
}
}

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

  1. 使用JDBCTemplate实现与Spring结合,方法公用 ——Emp实现类(EmpDaoImpl)

    /** * @Title: EmpDaoImpl.java * @Package org.dao.impl * @Description: TODO该方法的主要作用: * @author A18ccm ...

  2. jdbcTemplate 的update 和batchUpdate 方法的使用

    update 方法 首先来看update 方法     1.  sql的生成: 这个方法有三个实现,每一个方法都包含一个sql 和另外的一个参数 我们就拿第一个方法为例子: 第一个sql 应该怎么写 ...

  3. Spring注入方法

    2019独角兽企业重金招聘Python工程师标准>>> 依赖注入的3种方式     1.在xml中显式配置     2.在java中基于注解配置     3.隐式Bean的发现机制和 ...

  4. Spring EL方法调用实例

    Spring表达式语言(使用SpEL)允许开发人员使用表达式来执行方法和将返回值以注入的方式到属性,或叫作"使用SpEL方法调用". Spring EL在注解的形式 了解如何实现S ...

  5. @transactional注解_为啥同一个类中普通方法调用Spring注解方法,注解会失效?看完你就明白,So easy!...

    Spring注解(如@Transactional.@Cacheable.@Async等),在使用不当时,很可能会失效.失效的情况有很多种,本文我们就来瞅瞅,为啥同一个类中普通方法调用Spring注解方 ...

  6. Spring开启方法异步执行

    转载自 Spring开启方法异步执行 @EnableAsync @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Docum ...

  7. java springmvc搭建_【JavaEE】Springmvc+Spring搭建方法及example

    这一篇在前一篇Springmvc的基础上,加上Spring.Spring的主要用途叫做控制反转(依赖注入,IoC/DI)和面向切面的编程(AOP),本文只介绍IoC,因为AOP主要的应用场景是记录日志 ...

  8. Spring 事务方法与非事务方法相互调用 @Transactional 注解失效不回滚?

    写这篇文章的初衷呢就是最近遇到了一个Spring事务的大坑.与其说是坑,还不如说是自己事务这块儿太薄弱导致的(自嘲下). 项目环境 Spring Boot 下面开始问题描述,发生的过程有点长,想直接看 ...

  9. Spring AOP方法分析

    Spring AOP方法分析 此示例显示如何配置Spring AOP方法概要分析.我们可以在任何服务(或其他)类中使用Spring AOP和任何方法,而无需在任何服务类中编写任何一行分析代码.面向方面 ...

最新文章

  1. python读取文件-python读取大文件
  2. 潘天佑博士2014微软学生夏令营演讲:如何培养领导力
  3. [转载] C#面向对象设计模式纵横谈——8. Bridge桥接模式
  4. MATLAB中的S-Function的用法(C语言)
  5. hive序列生成_常见的序列化框架及Protobuf原理
  6. 在tomcat下context.xml中配置各种数据库连接池(转)
  7. 机器学习入门06 - 训练集和测试集 (Training and Test Sets)
  8. 又是一岁,又是一年,又是新的开端【我与51CTO的故事】
  9. 『Delphi』File not found的解决办法
  10. java 彻底删除文件_如何删除java文件
  11. 为什么正常单据记账没有数据_正常单据记账中找不到记账单据
  12. 从数据库导出数据到EXCEL换行的问题解决方法(即数据库字段太长自动换行)
  13. 产品经理的修炼之道--读后感
  14. [教程]教你如何制作彩色的3D打印Groot
  15. Miktex update更新失败 code=7 更换镜像 取消代理
  16. 阿里云OSS上传下载跨域问题
  17. 如何使用MacBook更省电,Macbook电池应注意事项
  18. 【模型库】龙门铣床三维模型(具有x_t通用格式)
  19. Win10启动VMware虚拟机开机秒蓝屏问题完美解决
  20. 人工智能正在向经济学领域渗透

热门文章

  1. php fpm 调试模式,调试 – nginx php-fpm xdebug netbeans只能启动一个调试会话
  2. java中factory方法_Java的23中设计模式--工厂方法模式(Factory Method)
  3. oracle错误 904,ORACLE 导出错误 EXP-00008: 遇到 Oracle 错误 904
  4. CoreJava 笔记总结-第三章 Java的基本程序设计结构
  5. Sprig boot自动配置
  6. kettle 空字符串 null问题解决
  7. Educational Codeforces Round 17 E. Radio stations cdq分治 + 树状数组
  8. 2021牛客暑期多校训练营7 xay loves monotonicity 线段树区间合并
  9. 【CF1311E】Construct the Binary Tree【增量构造】【复杂度证明】
  10. GCD HDU - 1695