如何将spring storedprocedure与spring数据存储库一起使用

时间:2017-01-17 11:44:14

标签: spring spring-data jdbctemplate

有人可以解释是否可以将spring存储过程与spring crud存储库或分页存储库一起使用,至少对于数据获取部分是什么?

我正在尝试将使用spring存储过程的现有代码与spring存储库集成。但是,我不想使用JPA。

2 个答案:

答案 0 :(得分:0)

您可以调用Spring Data JPA中的存储过程,如下所示

首先在实体中声明存储过程

public interface MyTableRepository extends CrudRepository<MyTable, Long> {

    @Procedure(name = "proc_with_input")
    public void inOnlyTest(@Param("inputParam") String inputParam);

    @Procedure(name = "proc_with_input_output")
    public String inAndOutTest(@Param("inputParam") String inputParam);
 }

在JPA reporsitory界面中调用procs,如下所示。

@Override
protected void onResume() {
    super.onResume();
    startService();
    btConfirmPGO.setEnabled(false);
    btNotePGO.setEnabled(false);
    btDetailsPGO.setEnabled(false);
    if (NotePGOActivity.idTypeNote != null) {
        update();
    }
    String[] selectionVals = {NewDataAdapter.objectId, NewDataAdapter.lineId};
    tasks.clear();
    if (!isSort && !isFiltr) {
        getAllTasks();
    } else if (isSort && !isFiltr) {
        getAllTasks1(sortColumn[0], sort[0]);
    } else if (!isSort && isFiltr) {
        getAllTasks2(column[0], sort[0], filtrText);
    } else if (isSort && isFiltr) {
        getAllTasks3(column[0], sort[0], filtrText, sortColumn[0]);
    }
    Page page = config.getItems().get(1).getPages().get(0);
    myAdapter = new NewLineDataAdapter(this, parseTrasyToDataRow(tasks), page);

    list.setAdapter(myAdapter);
    list.setOnItemClickListener(this);
    myAdapter.notifyDataSetChanged();
}

答案 1 :(得分:0)

没有正式的Spring Data模块可以直接使用没有JPA的jdbc。

但是有一个开源项目https://github.com/jirutka/spring-data-jdbc-repository试图这样做,虽然看起来有些停滞不前。由于您实际上创建了子类,因此它应该能够使用存储过程/ jdbc模板添加/覆盖方法,因为您需要的只是一个DataSource。