jpa mysql存储过程_spring data jpa 如何调用mysql存储过程?
A:首先定義存儲(chǔ)過程依賴的jpa表:
@Entity
@Table(name="evenmngt_childthingtree_tmp")//數(shù)據(jù)庫中的表名
@NamedStoredProcedureQuery(name = "getChildTree1", procedureName = "eventmngt.getChildTree1",
parameters = {@StoredProcedureParameter(mode= ParameterMode.IN,name = "thingnums", type = String.class)}
)
//此處的@NamedStoredProcedureQuery就是要和數(shù)據(jù)庫里面的存儲(chǔ)過程要對(duì)應(yīng),
//java實(shí)體類??????? ??? ??? ??? ??? ??? ??? ??? ?數(shù)據(jù)庫
//getChildTree1(java實(shí)體類的存儲(chǔ)過程名稱)???? eventmngt.getChildTree1(數(shù)據(jù)庫名.存儲(chǔ)過程名稱)
//@StoredProcedureParameter 存儲(chǔ)過程參數(shù)類型注解(mode 參數(shù)模式[三種 in out? in+out],name 參數(shù)名稱:要和數(shù)據(jù)庫存儲(chǔ)過程定義的參數(shù)名稱相同
//type參數(shù)類型:參數(shù)類型的class對(duì)象)
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;//父事情編號(hào)
@Column(name="thingnum")
private String thingNum;//事情編號(hào)
@Column(name="lev")
private int lev;//級(jí)別;
@Column(name="count")
private int count;//
...此處省略
get 或set 方法;
...重寫toString()方法此處省略
toString()方法
}
B定義持久層接口方法 調(diào)用存儲(chǔ)過程
@Repository
@Transactional
public interface ChildThingTreeDao extends CrudRepository,JpaRepository {
@Procedure(name = "getChildTree1")//此處的name 要和實(shí)體類里@NamedStoredProcedureQuery注解的name屬性值要一樣,否則會(huì)報(bào)錯(cuò)。
public void getChildTree1(@Param("thingnums") String thingnums);
//(@Param注解里的名字要和@StoredProcedureParameter里的name屬性值一樣
}
C:在service層直接調(diào)用存儲(chǔ)過程
@Autowired
private ChildThingTreeDao childThingTreeDao;
childThingTreeDao.getChildTree1(param);
D: 至此存儲(chǔ)過程的調(diào)用就完了。
總結(jié)
以上是生活随笔為你收集整理的jpa mysql存储过程_spring data jpa 如何调用mysql存储过程?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中gedit中定义变量,lin
- 下一篇: php关联图片,PHP关联链接添加方法