gpt4 book ai didi

java - 如何从 MyBatis Java 调用存储过程?

转载 作者:搜寻专家 更新时间:2023-11-01 03:41:57 25 4
gpt4 key购买 nike

我收到错误:

org.mybatis.spring.MyBatisSystemException: nested exception is org. apache. ibatis. exceptions.PersistenceException:

java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for .."

当我使用 Java 从 mybatis 调用存储过程时。

我正在使用 PostgreSQL 作为数据库和 Spring MVC 框架。为此,我调用存储过程的 DAO 类是:

Orders orders=new Orders();

值以编程方式设置为变量顺序。

Integer insert= getSqlSession().insert("records",orders);**

我的 mybatis 文件如下所示:

<insert id="records" parameterType="Orders" statementType="CALLABLE">
{call fn_records_tbl(#{rId,javaType=Integer,jdbcType=INTEGER,mode=IN},#{state,javaType=String,jdbcType=CHAR,mode=IN},#{uId,javaType=Integer,jdbcType=INTEGER,mode=IN},#{status,javaType=String,jdbcType=CHAR,mode=IN})}
</insert>

我的存储过程语法是:

CREATE OR REPLACE FUNCTION fn_records_tbl(rId integer, state character,uId integer, status character)

RETURNS void AS

$BODY$
DECLARE

-- my code
BEGIN

-- my code
END

$BODY$

LANGUAGE plpgsql VOLATILE
COST 100;

ALTER FUNCTION fn_records_tbl(integer, character, integer, character)
OWNER TO mydba;

我传递参数的实体类是:

 public class Orders implements Serializable {

private static final long serialVersionUID = 267216928694677437L;
private Integer uId;
private Integer rId;
private String status;
private String state;

// here are my setter and getter
}

最佳答案

My syntax for calling stored procedure is correct both in MyBatis and in stored procedure.

因为我使用的是 Spring 框架,所以由于一些传递依赖,我的存储过程没有从 Java 中的 MyBatis 调用。

所以我检查了我的 pom.xml 文件以查找传递依赖项,然后我排除了所有这些对 MyBatis 的依赖项,并将最新版本的 MyBatis 用于 spring 框架。

现在它可以正常工作了。

关于java - 如何从 MyBatis Java 调用存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com