jpa mysql存储过程_spring data jpa 如何调用mysql存储过程?
A:首先定義存儲過程依賴的jpa表:
@Entity
@Table(name="evenmngt_childthingtree_tmp")//數據庫中的表名
@NamedStoredProcedureQuery(name = "getChildTree1", procedureName = "eventmngt.getChildTree1",
parameters = {@StoredProcedureParameter(mode= ParameterMode.IN,name = "thingnums", type = String.class)}
)
//此處的@NamedStoredProcedureQuery就是要和數據庫里面的存儲過程要對應,
//java實體類??????? ??? ??? ??? ??? ??? ??? ??? ?數據庫
//getChildTree1(java實體類的存儲過程名稱)???? eventmngt.getChildTree1(數據庫名.存儲過程名稱)
//@StoredProcedureParameter 存儲過程參數類型注解(mode 參數模式[三種 in out? in+out],name 參數名稱:要和數據庫存儲過程定義的參數名稱相同
//type參數類型:參數類型的class對象)
public class ChildThingTree implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name="parentthingnum")
private String parentThingNum;//父事情編號
@Column(name="thingnum")
private String thingNum;//事情編號
@Column(name="lev")
private int lev;//級別;
@Column(name="count")
private int count;//
...此處省略
get 或set 方法;
...重寫toString()方法此處省略
toString()方法
}
B定義持久層接口方法 調用存儲過程
@Repository
@Transactional
public interface ChildThingTreeDao extends CrudRepository,JpaRepository {
@Procedure(name = "getChildTree1")//此處的name 要和實體類里@NamedStoredProcedureQuery注解的name屬性值要一樣,否則會報錯。
public void getChildTree1(@Param("thingnums") String thingnums);
//(@Param注解里的名字要和@StoredProcedureParameter里的name屬性值一樣
}
C:在service層直接調用存儲過程
@Autowired
private ChildThingTreeDao childThingTreeDao;
childThingTreeDao.getChildTree1(param);
D: 至此存儲過程的調用就完了。
總結
以上是生活随笔為你收集整理的jpa mysql存储过程_spring data jpa 如何调用mysql存储过程?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中gedit中定义变量,lin
- 下一篇: sql left join用法_图解 S