• 使用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;
        }
     }
    

  • 相关阅读:
    刷题(十五)
    Pycharm按装
    Jmeter
    内存泄露部分检测工具
    Failed to resolve
    图片显示方向不对怎么办
    ScaleType属性
    RobotFramework
    LoadRunner
    Appium
  • 原文地址:https://www.cnblogs.com/a1111/p/7459651.html
Copyright © 2020-2023  润新知