平台使用oracle,与oracle所有操作通过调用存储过程实现. 使用Spring的调用存储过程技术,用到spring.jar包中类为
StoreProcedure , SqlOutParameter, SqlParameter和jdk的DataSource;
import javax.sql.DataSource; jdk自带接口 import org.springframework.jdbc.core.SqlOutParameter; import org.springframework.jdbc.core.SqlParameter; import org.springframework.jdbc.object.StoredProcedure;
1. java代码调用步骤分析
(1)声明连个List, 存放oracle中函数的输入和输出参数
List inParamsDesc = new Vector();
List outParamsDesc = new Vector();
(2) 把函数参数以对象数组的形式分别放入List中 ,
inParamsDesc.add(new Object[] { "LOGIN_NAME", new Integer(OracleTypes.VARCHAR) }); inParamsDesc.add(new Object[] { "PASSWORD", new Integer(OracleTypes.VARCHAR) });
outParamsDesc.add(new Object[] { "vUserID", new Integer(OracleTypes.INTEGER) });
(3).把参数值以K-V形式放入 Map对象中
Encryption encryptor = new Encryption(ParamNames.APP_CODE, ParamNames.APP_SERIAL_NO, loginId, password); Map inParams = new HashMap(); inParams.put("LOGINNAME",loginid); inParams.put("PASSWORD",password);
(4)创建StoredProcedureCall(自定义对spring连接oracle的封转类) 对象,构造方法,分别为 数据源 ,所调用给的函数名,
true表示此存数过程为函数function
StoredProcedureCall procCall = new StoredProcedureCall(dataSource,"UserPkg.isUser", true);
(5)调用声明输入输出参数
procCall.declareParameters(inParamsDesc, outParamsDesc);
(6)执行存储过程,返回结果用map接收, 参数为map对象
Map outParams = procCall.executeProcedure(inParams);
(7)处理结果:
Integer userId = (Integer) outParams.get("vUserID");
2. 常见的基本数据类型 java<->oracle转化:
int =>public static final int INTEGER = 4;
String = > public static final int VARCHAR = 12;
double => public static final int DOUBLE = 8;