0
我正在製作一個存儲在Oralce 11g中的程序,我應該從mybatis映射器調用它。該過程需要三個參數,第三個參數用於OUT參數。我編碼如下,但OUT參數在Java中返回爲0。mybatis可調用語句輸出參數整數
MyBatis的映射器:
MyBatis的映射器接口:
public interface UserMapper {
void setUserRole(Map<String, Object> map);
}
服務層利用MyBatis的映射器:
Oracle中代碼@Override
public boolean setBasicRole(String email) {
Map<String, Object> map = new HashMap<String, Object>();
Integer privilegesCount = 0;
map.put("roleName", UserServiceImpl.ROLE_BASIC);
map.put("email", (Object)email);
map.put("cntPrivs", privilegesCount);
userMapper.setUserRole(map);
System.out.println("cntPrivs : " + privilegesCount); // printed zero
return (privilegesCount > 0)? true : false;
}
:
set serveroutput on
declare
cnt_privs number := 0;
begin
set_user_role('<set my email>', 'NORMAL', cnt_privs);
dbms_output.put_line(cnt_privs); // printed more than 0
end;
/
我檢查了OUT參數的過程在數據庫區域返回0以上。 在Java中,調用userMapper.setUserRole()方法後,「privilegeCount」變量應該大於0。但返回0.
當我將「privilegeCount」初始化爲10時,它在調用userMapper.setUserRole()後保持爲10。
看起來好像「privilegeCount」沒有與mybatis同步。
我該如何處理?
在此先感謝。