如何通过EF调用MVC中的mvc ef 执行存储过程程

Java中调用存储过程或存储函数的方法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Java中调用存储过程或存储函数的方法
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢lxg290 的BLOG
用户名:lxg290
文章数:74
访问量:6923
注册日期:
阅读量:5863
阅读量:12276
阅读量:409653
阅读量:1097891
51CTO推荐博文
1)sqlmap.xml中的配置如下:& & & & 需要注意的事项:& & & & &a) parameterMap 中对应的属性property的值要和存储过程中的名字一样,并且对应的顺序要和存储过程中的顺序一致,& & & & & & & 否则可能无法获取对应的返回值;& & &&!-- 调用packaget的存储过程的参数 --&& & & &&parameterMap id="proProductDzProcParam" class="java.util.Map"&
&parameter property="p_dzno" &jdbcType="VARCHAR" &javaType="java.lang.String" mode="OUT" /&
&parameter property="p_vchtype" &jdbcType="VARCHAR" &javaType="java.lang.String" mode="IN" /&
&parameter property="p_productclass" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" /&
&parameter property="p_dptcode" &jdbcType="VARCHAR" &javaType="java.lang.String" mode="IN" /&& & & &&/parameterMap&& & & &!-- 调用package的存储过程生成单证号--&& & &procedure id="proProductDzProc" parameterMap="proProductDzProcParam"&
& & & &![CDATA[
{call proddata.product_dz_proc.pd_getdzno(?,?,?,?)} &//这里的{}不一定需要
]]&& & & & &/procedure&2)java中如何调用& &public String getProductDZNO(String pVchtype, String productclass, String pDptcode) throws DAOException {
Map&String, String& paramMap = new HashMap&String, String&();
paramMap.put("p_vchtype", pVchtype);
paramMap.put("p_productclass", productclass);
paramMap.put("p_dptcode", pDptcode);
paramMap.put("p_dzno", null);
super._queryForObject("proProductDzProc", paramMap);
return paramMap.get("p_dzno");
} catch (Exception e) {
String error = "生成单证号出错";
LogUtil.error(e, this.getClass().getName(), "getProductDZNO", e.getMessage(), error);
throw new DAOException(error);
了这篇文章
类别:未分类┆阅读(0)┆评论(0)spring中调用存储过程 - Java教程 - 编程入门网
spring中调用存储过程
springframework.jdbc.object.StoredProcedure是对应存储过程调用的操作对象,它通过其父类org.springframework.jdbc.object.SqlCall获得相应的底层API支持(CallableStatementCreator),然后在此基础之上构建了调用存储过程的执行方法。
StoredProcedure是抽象类,所以需要实现相应子类以封装对特定存储过程的调用,还记得我们在讲解JdbcTemplate调用存储过程时候定义的存储过程吗?
CREATE PROCEDURE CountTable(IN tableName varchar(1000),OUT sqlStr varchar(1000) , INOUT v INT)
   set @flag =
   set @sql = CONCAT('select count(*) into @res from ' , tableName , ' where ACTIVE_FLAG=?');
   PREPARE stmt FROM @
   EXECUTE stmt using @
   DEALLOCATE PREPARE
   set v = @
   set sqlStr = @
通过继承StoredProcedure,我们可以为该存储过程的调用提供一个对应的操作对象:
public class CountTableStoredProcedure extends StoredProcedure {
   private static final String PROCEDURE_NAME = &CountTable&;
   public static final String IN_PARAMETER_NAME = &tableName&;
   public static final String OUT_PARAMETER_NAME = &sqlStr&;
   public static final String INOUT_PARAMETER_NAME = &v&;
   public CountTableStoredProcedure(DataSource dataSource)
     super(dataSource,PROCEDURE_NAME);
     // setFunction(true);
     declareParameter(new SqlParameter(IN_PARAMETER_NAME,Types.VARCHAR));
     declareParameter(new SqlOutParameter(OUT_PARAMETER_NAME,Types.VARCHAR));
     declareParameter(new SqlInOutParameter(INOUT_PARAMETER_NAME,Types.INTEGER));
     compile();
   public CountTableResult doCountTable(String tableName,Integer v)
     Map paraMap = new HashMap();
     paraMap.put(IN_PARAMETER_NAME, tableName);
     paraMap.put(INOUT_PARAMETER_NAME, v);
     Map resultMap = execute(paraMap);
     CountTableResult result = new CountTableResult();
     result.setSql((String)resultMap.get(OUT_PARAMETER_NAME));
     result.setCount((Integer)resultMap.get(INOUT_PARAMETER_NAME));
关于该存储过程操作对象,部分细节我们有必要关注一下:
存储过程操作对象对应的SQL是存储过程的名称,而不是真正意义上的SQL语句,当我们调用compile方法的时候,StoredProcedure的父类SqlCall会根据你提供的存储过程名称拼装真正意义上的符合SQL92标准的存储过程调用语句,类似于&{ call CountTable(?,?,?) }&的形式。
因为我们的CountTableStoredProcedure只针对CountTable存储过程调用,所以,该存储过程的名称我们在类一开始就声明为常量:
private static final String PROCEDURE_NAME = &CountTable&;如果有多个存储过程的参数顺序相同,结果处理也一样的话,你也可以将存储过程的名称声明为变量,这完全要取决于具体的应用场景。
在构造方法中,我们将&setFunction(true);&注释掉了,因为我们调用的CountTable不是一个Function,如果你要调用的存储过程类型为Function的话,你需要通过该方法将&function&的值设置为true,以告知StoredProcedure在处理调用的时候要区别对待。
在complie之前通过declareParameter声明参数,这几乎是雷打不动的惯例,不过,在StoredProcedure中使用declareParameter的时候却要有所注意了:}

我要回帖

更多关于 ef调用存储过程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信