Mybatis调用存储过程,通过sys_refcursor获取对象集合

1.数据库写法

 PROCEDURE selectRoleMenu(cdbhs OUT SYS_REFCURSOR,
                           jsjb  in varchar2,
                           sjjs  in varchar2,
                           M_RES OUT INTEGER,
                           M_ERR OUT VARCHAR2) is
BEGIN
...
END;

2.Dao层写法

void selectUserMenu(@Param("map")Map map);

3.Service层

	public void selectUserMenu(List menus, FrmSysUser user) {
		Map map = new HashMap();
		map.put("menus",new ArrayList());
		map.put("yhdh",user.getYhdh());
		map.put("code",user.getCode());
		map.put("mess",user.getMess());
		frmMenuDao.selectUserMenu(map);
		if(map!=null){
			//1.这样写是错误的,导致引用改变,不能改变全局变量的数据
			menus = (List)map.get("menus");
			//2.正确操作
			menus.clear();
			menus.addAll((List)map.get("menus"));
		}
	}

4.Mybatis配置文件

(1)调用存储过程
	
(2)resultMap
	
		
		
    	
    	
    	
	

其中resultMap=cursorMap至关重要,要是不写,会导致返回的集合不知道生成什么实体类。

你可能感兴趣的:(Mybatis)