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

xiaoxiao2021-02-28  113

/** * @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;     }  }
转载请注明原文地址: https://www.6miu.com/read-21116.html

最新回复(0)