📄 storedproceduretests.java
字号:
ctrlResultSet.verify();
assertEquals(2, sproc.getCount());
}
public void testStoredProcedureWithResultSetMapped() throws Exception {
MockControl ctrlResultSet = MockControl.createControl(ResultSet.class);
ResultSet mockResultSet = (ResultSet) ctrlResultSet.getMock();
mockResultSet.next();
ctrlResultSet.setReturnValue(true);
mockResultSet.getString(2);
ctrlResultSet.setReturnValue("Foo");
mockResultSet.next();
ctrlResultSet.setReturnValue(true);
mockResultSet.getString(2);
ctrlResultSet.setReturnValue("Bar");
mockResultSet.next();
ctrlResultSet.setReturnValue(false);
mockResultSet.close();
ctrlResultSet.setVoidCallable();
mockCallable.execute();
ctrlCallable.setReturnValue(true);
mockCallable.getUpdateCount();
ctrlCallable.setReturnValue(-1);
mockCallable.getResultSet();
ctrlCallable.setReturnValue(mockResultSet);
mockCallable.getMoreResults();
ctrlCallable.setReturnValue(false);
mockCallable.getUpdateCount();
ctrlCallable.setReturnValue(-1);
mockCallable.getWarnings();
ctrlCallable.setReturnValue(null);
mockCallable.close();
ctrlCallable.setVoidCallable();
mockConnection.prepareCall(
"{call " + StoredProcedureWithResultSetMapped.SQL + "()}");
ctrlConnection.setReturnValue(mockCallable);
replay();
ctrlResultSet.replay();
StoredProcedureWithResultSetMapped sproc =
new StoredProcedureWithResultSetMapped(mockDataSource);
Map res = sproc.execute();
ctrlResultSet.verify();
List rs = (List) res.get("rs");
assertEquals(2, rs.size());
assertEquals("Foo", rs.get(0));
assertEquals("Bar", rs.get(1));
}
public void testParameterMapper() throws Exception {
mockCallable.setString(1, "EasyMock for interface java.sql.Connection");
ctrlCallable.setVoidCallable();
mockCallable.registerOutParameter(2, Types.VARCHAR);
ctrlCallable.setVoidCallable();
mockCallable.execute();
ctrlCallable.setReturnValue(false);
mockCallable.getUpdateCount();
ctrlCallable.setReturnValue(-1);
mockCallable.getObject(2);
ctrlCallable.setReturnValue("OK");
mockCallable.getWarnings();
ctrlCallable.setReturnValue(null);
mockCallable.close();
ctrlCallable.setVoidCallable();
mockConnection.prepareCall(
"{call " + ParameterMapperStoredProcedure.SQL + "(?, ?)}");
ctrlConnection.setReturnValue(mockCallable);
replay();
ParameterMapperStoredProcedure pmsp =
new ParameterMapperStoredProcedure(mockDataSource);
Map out = pmsp.executeTest();
assertEquals("OK", out.get("out"));
}
public void testSqlTypeValue() throws Exception {
int[] testVal = new int[] {1, 2};
mockCallable.getConnection();
ctrlCallable.setDefaultReturnValue(mockConnection);
mockCallable.setObject(1, testVal, Types.ARRAY);
ctrlCallable.setVoidCallable();
mockCallable.registerOutParameter(2, Types.VARCHAR);
ctrlCallable.setVoidCallable();
mockCallable.execute();
ctrlCallable.setReturnValue(false);
mockCallable.getUpdateCount();
ctrlCallable.setReturnValue(-1);
mockCallable.getObject(2);
ctrlCallable.setReturnValue("OK");
mockCallable.getWarnings();
ctrlCallable.setReturnValue(null);
mockCallable.close();
ctrlCallable.setVoidCallable();
mockConnection.prepareCall(
"{call " + SqlTypeValueStoredProcedure.SQL + "(?, ?)}");
ctrlConnection.setReturnValue(mockCallable);
replay();
SqlTypeValueStoredProcedure stvsp =
new SqlTypeValueStoredProcedure(mockDataSource);
Map out = stvsp.executeTest(testVal);
assertEquals("OK", out.get("out"));
}
private class StoredProcedureConfiguredViaJdbcTemplate extends StoredProcedure {
public static final String SQL = "configured_via_jt";
public StoredProcedureConfiguredViaJdbcTemplate(JdbcTemplate t) {
setJdbcTemplate(t);
setSql(SQL);
declareParameter(new SqlParameter("intIn", Types.INTEGER));
declareParameter(new SqlOutParameter("intOut", Types.INTEGER));
compile();
}
public int execute(int intIn) {
Map in = new HashMap();
in.put("intIn", new Integer(intIn));
Map out = execute(in);
Number intOut = (Number) out.get("intOut");
return intOut.intValue();
}
}
private class AddInvoice extends StoredProcedure {
public static final String SQL = "add_invoice";
public AddInvoice(DataSource ds) {
setDataSource(ds);
setSql(SQL);
declareParameter(new SqlParameter("amount", Types.INTEGER));
declareParameter(new SqlParameter("custid", Types.INTEGER));
declareParameter(new SqlOutParameter("newid", Types.INTEGER));
compile();
}
public int execute(int amount, int custid) {
Map in = new HashMap();
in.put("amount", new Integer(amount));
in.put("custid", new Integer(custid));
Map out = execute(in);
Number id = (Number) out.get("newid");
return id.intValue();
}
}
private class NullArg extends StoredProcedure {
public static final String SQL = "takes_null";
public NullArg(DataSource ds) {
setDataSource(ds);
setSql(SQL);
declareParameter(new SqlParameter("ptest", Types.VARCHAR));
compile();
}
public void execute(String s) {
Map in = new HashMap();
in.put("ptest", s);
Map out = execute(in);
}
}
private class NoSuchStoredProcedure extends StoredProcedure {
public static final String SQL = "no_sproc_with_this_name";
public NoSuchStoredProcedure(DataSource ds) {
setDataSource(ds);
setSql(SQL);
compile();
}
public void execute() {
execute(new HashMap());
}
}
private class UncompiledStoredProcedure extends StoredProcedure {
public static final String SQL = "uncompile_sp";
public UncompiledStoredProcedure(DataSource ds) {
super(ds, SQL);
}
public void execute() {
execute(new HashMap());
}
}
private class UnnamedParameterStoredProcedure extends StoredProcedure {
public UnnamedParameterStoredProcedure(DataSource ds) {
super(ds, "unnamed_parameter_sp");
declareParameter(new SqlParameter(Types.INTEGER));
compile();
}
public void execute(int id) {
Map in = new HashMap();
in.put("id", new Integer(id));
Map out = execute(in);
}
}
private class MissingParameterStoredProcedure extends StoredProcedure {
public MissingParameterStoredProcedure(DataSource ds) {
setDataSource(ds);
setSql("takes_string");
declareParameter(new SqlParameter("mystring", Types.VARCHAR));
compile();
}
public void execute() {
execute(new HashMap());
}
}
private class StoredProcedureWithResultSet extends StoredProcedure {
public static final String SQL = "sproc_with_result_set";
private int count = 0;
public StoredProcedureWithResultSet(DataSource ds) {
setDataSource(ds);
setSql(SQL);
declareParameter(
new SqlReturnResultSet("rs", new RowCallbackHandlerImpl()));
compile();
}
public void execute() {
execute(new HashMap());
}
public int getCount() {
return count;
}
private class RowCallbackHandlerImpl implements RowCallbackHandler {
public void processRow(ResultSet rs) throws SQLException {
count++;
}
}
}
private class StoredProcedureWithResultSetMapped extends StoredProcedure {
public static final String SQL = "sproc_with_result_set";
public StoredProcedureWithResultSetMapped(DataSource ds) {
setDataSource(ds);
setSql(SQL);
declareParameter(
new SqlReturnResultSet("rs", new RowMapperImpl()));
compile();
}
public Map execute() {
Map out = execute(new HashMap());
return out;
}
private class RowMapperImpl implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
return rs.getString(2);
}
}
}
private class ParameterMapperStoredProcedure extends StoredProcedure {
public static final String SQL = "parameter_mapper_sp";
public ParameterMapperStoredProcedure(DataSource ds) {
setDataSource(ds);
setSql(SQL);
declareParameter(new SqlParameter("in", Types.VARCHAR));
declareParameter(new SqlOutParameter("out", Types.VARCHAR));
compile();
}
public Map executeTest() {
Map out = null;
out = execute(new TestParameterMapper());
return out;
}
private class TestParameterMapper implements ParameterMapper {
private TestParameterMapper() {
}
public Map createMap(Connection conn) throws SQLException {
Map inParms = new HashMap();
String testValue = conn.toString();
inParms.put("in", testValue);
return inParms;
}
}
}
private class SqlTypeValueStoredProcedure extends StoredProcedure {
public static final String SQL = "sql_type_value_sp";
public SqlTypeValueStoredProcedure(DataSource ds) {
setDataSource(ds);
setSql(SQL);
declareParameter(new SqlParameter("in", Types.ARRAY, "NUMBERS"));
declareParameter(new SqlOutParameter("out", Types.VARCHAR));
compile();
}
public Map executeTest(final int[] inValue) {
Map in = new HashMap(1);
in.put("in", new AbstractSqlTypeValue() {
public Object createTypeValue(Connection con, int type, String typeName) {
//assertEquals(Connection.class, con.getClass());
//assertEquals(Types.ARRAY, type);
//assertEquals("NUMBER", typeName);
return inValue;
}
});
Map out = null;
out = execute(in);
return out;
}
}
private class StoredProcedureExceptionTranslator extends StoredProcedure {
public static final String SQL = "no_sproc_with_this_name";
public StoredProcedureExceptionTranslator(DataSource ds) {
setDataSource(ds);
setSql(SQL);
getJdbcTemplate().setExceptionTranslator(new SQLExceptionTranslator() {
public DataAccessException translate(
String task,
String sql,
SQLException sqlex) {
return new CustomDataException(sql, sqlex);
}
});
compile();
}
public void execute() {
execute(new HashMap());
}
}
private class CustomDataException extends DataAccessException {
public CustomDataException(String s) {
super(s);
}
public CustomDataException(String s, Throwable ex) {
super(s, ex);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -