/**
* @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;
}
}