现实应用中,一般都是直接诶调用procedure,很少调用function。
但是有时候不得不调用Function。
那么Ibatis中如何调用Oracle Function呢?
Function:
FUNCTION fun_is_currency_flag(p_cal_id IN VARCHAR2,
p_segment5 IN VARCHAR2) RETURN NUMBER IS
BEGIN
RETURN 1;
END fun_is_currency_flag;
sqlmap:
{? = call pafims_package_system_deal.fun_is_currency_flag(?,?)}
java调用:
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class TestFunction extends DaoSupport{
/**
* @param args
*/
public static void main(String[] args) {
Map paramMap = new HashMap();
paramMap.put("user_id", "wanglu009");
paramMap.put("segment5", "55020307J");
//paramMap.put("isCurrency", null);
TestFunction tf = new TestFunction();
tf.test(paramMap);
Integer s = (Integer) paramMap.get("isCurrency");
System.out.println(s);
}
public void test(Map paramMap) {
try {
this.getSqlMapClient().update("test_func", paramMap);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
DaoSupport.java:
import java.io.IOException;
import java.io.Reader;
import org.apache.log4j.Logger;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class DaoSupport {
private Logger logger = Logger.getLogger(DaoSupport.class);
private SqlMapClient sqlMapClient = null;
public SqlMapClient getSqlMapClient() {
return sqlMapClient;
}
public DaoSupport() { Reader reader; try { reader = Resources.getResourceAsReader("com/ibatis/customtype/sqlmap-config.xml"); sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); } catch (IOException e) { logger.error("读取Ibatis配置文件出错!"); logger.error(e); } } }