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: 至此存储过程的调用就完了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值