用mybatis做oracle的储存过程
推荐于2016-11-11 · 知道合伙人数码行家
如何使用Mybaits调用数据库中的存储过程,下面以Oracle数据库的为例:
1.在数据库中创建以下的存储过程:
2.编写SQL映射文件WxclDAO.xml:
<select id="selectWxcl2" parameterType="java.util.Map" statementType="CALLABLE">
<![CDATA[
call pro_wxcl(#{result,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=WxclMap},
#{wxclid,mode=IN,jdbcType=VARCHAR})
]]>
</select>
其中statementType="CALLABLE"表示要调用存储过程,parameterType参数类型;
jdbcType对应数据库中的数据类型,javaType对应代码中的数据类型,resultMap表示结果集‘WxclMap’
定义了返回的数据类型
3.编写JAVA代码调用存储过程:
public class WxclServiceImpl implements WxclService {
private WxclDAO wxclDAO;
public void setWxclDAO(WxclDAO wxclDAO) {
this.wxclDAO = wxclDAO;
}
@SuppressWarnings("unchecked")
public List<WxclDto> selectWxcl2(WxclBean wxclBean){
// 用作传参和接受返回值
Map<String, Object> params = new HashMap<String, Object>();
params.put("wxclid", "121212");
// 将返回值保存到List中
List<WxclDto> resultList= new ArrayList<WxclDto>();
wxclDAO.selectWxcl2(params);
// 结果集保存在params中通过获取KEY值取得结果
resultList=(List<WxclDto>) params.get("result");
return resultList;
}
4.运行结果图:
is
定义属性
begin
这输入你的类容
end mybatis;
具体点比如:返回类型是SYS_REFCURSOR
怎样来处理
{call procedure(?)}