zoukankan      html  css  js  c++  java
  • 使用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;
        }
     }
    

  • 相关阅读:
    个人永久性免费-Excel催化剂功能第103波-批量打开多文件或多链接
    个人永久性免费-Excel催化剂插件功能修复与更新汇总篇之八
    个人永久性免费-Excel催化剂功能第101波-批量替换功能(增加正则及高性能替换能力)
    个人永久性免费-Excel催化剂功能第99波-手机号码归属地批量查询
    个人永久性免费-Excel催化剂功能第100波-透视多行数据为多列数据结构
    个人永久性免费-Excel催化剂功能第98波-零代码零距离轻松接触并拥有金融大数据
    个人永久性免费-Excel催化剂功能第97波-快递单号批量查询物流信息
    个人永久性免费-Excel催化剂功能第95波-地图数据挖宝之IP地址转地理地址及不同经纬度版本转换
    个人永久性免费-Excel催化剂功能第96波-地图数据挖宝之全国天气查询(区域最细可到区县,最长预报4天)
    实现兼容document.querySelector的方法
  • 原文地址:https://www.cnblogs.com/a1111/p/7459651.html
Copyright © 2011-2022 走看看