在Spring的存储过程中传递参数

时间:2019-02-27 10:24:29

标签: java spring spring-boot

我的sql数据库中有一个存储过程,我想使用@Procedure注释从Java程序(带有spring)中调用它。到目前为止,一切都很好。

我用@Procedure(procedureName = "my_procedure")调用该过程。问题是我想在过程中传递2个参数。

有没有一种方法可以使用@Procedure批注来实现?

非常感谢。

2 个答案:

答案 0 :(得分:2)

这里是example,而this的文章可能会有帮助。

首先,您需要在实体上声明过程:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <TextView
        android:id="@+id/settingsText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:textAllCaps="true"
        android:text="Preference 1"/>

</android.support.constraint.ConstraintLayout>

第二,在您的存储库中引用它

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <TextView
        android:id="@+id/settingsTextContainer"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:textAllCaps="true"
        android:background="@android:color/background_dark"
        android:textColor="@android:color/background_light"
        android:text="Category 1"/>

</android.support.constraint.ConstraintLayout>

答案 1 :(得分:1)

好,这是解决方法!

如果名称相同,则

@Procedure批注可用于映射具有存储过程的方法,如果名称相同,则将方法变量映射到过程参数足够聪明。但是,要将更改提交给db,必须使用Transactional批注。 例如。

@Procedure
@Transactional
void MyProcedureName(Integer par1 , Integer par2);

上面的代码将从数据库中调用过程MyProcedureName,并将par1和par2映射到MyProcedureName参数1和参数2。