1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > jpa mysql存储过程_(原)springbootjpa调用服务器mysql数据库的存储过程方法-Go语言中文社区...

jpa mysql存储过程_(原)springbootjpa调用服务器mysql数据库的存储过程方法-Go语言中文社区...

时间:2020-09-05 10:38:25

相关推荐

jpa mysql存储过程_(原)springbootjpa调用服务器mysql数据库的存储过程方法-Go语言中文社区...

一、springboot jpa项目文件配置

#----------------------------------------------------------

########################################################

###datasource 配置MYSQL数据源;

########################################################

## 数据库

spring.jpa.database = MYSQL

spring.jpa.show-sql = true

spring.datasource.url=jdbc:mysql://IP:3306/vcoo_food?useUnicode=true&characterEncoding=UTF-8

spring.datasource.username=root

#spring.datasource.password=root

spring.datasource.password=123456

########################################################

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.tomcat.max-active=100

spring.datasource.tomcat.max-idle=200

spring.datasource.tomcat.initialSize=20

# Hibernate ddl auto (create, create-drop, update)

spring.jpa.properties.hibernate.hbm2ddl.auto=update

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect

#这个东西建议有,不知道为什么,放他之后,请求数据库的一些问题自动就没了

spring.cache.ehcache.config=classpath:ehcache.xml

ehcache.xml

xsi:noNamespaceSchemaLocation="ehcache.xsd">

二、java代码配置

entity.java

@Entity

@Table(name = "prod_sale_master") //表名

@Component

/***********配置存储过程地方***************************/

@NamedStoredProcedureQueries({//一个实体类涉及多个存储过程时,注意配置的格式@***({})

@NamedStoredProcedureQuery(//配置单个存储过程

name="p_prod_sale_make" ,//springboot jpa 调用的名字

procedureName = "p_prod_sale_make" ,//mysql调用存储过程的名字

parameters = {//要传的参数

//in表示传入 out表示传出或者说是返回值

//name表示存储过程要用的参数名称

//type表示要传入参数的类型

@StoredProcedureParameter(mode=ParameterMode.IN,name="v_rec_emp",type=String.class),

@StoredProcedureParameter(mode=ParameterMode.IN,name="v_mem_card",type=String.class),

@StoredProcedureParameter(mode=ParameterMode.IN,name="v_Room_Code",type=String.class),

@StoredProcedureParameter(mode=ParameterMode.IN,name="v_Mem_Cnt",type=Integer.class),

@StoredProcedureParameter(mode=ParameterMode.OUT,name="v_Err_Msg",type=String.class)

}),

@NamedStoredProcedureQuery(name="p_chg_room" ,procedureName = "p_chg_room" , parameters = {

@StoredProcedureParameter(mode=ParameterMode.IN,name="v_Bill_Code",type=String.class),

@StoredProcedureParameter(mode=ParameterMode.IN,name="v_Room_Code",type=String.class),

@StoredProcedureParameter(mode=ParameterMode.OUT,name="v_Err_Msg",type=String.class)

})

})

})

/*****************************************/

public class ProdSaleMaster {//实体名

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name="rec_id")//建议个数据库的名字一样 全部对应 无论大小写

private Integer rec_id;//序号

@Column(name="bill_code")

/set()/get()

}

serviceImpl.java

@Autowired

private EntityManager entityManager;

@Override

public Object saveProdSaleMaster(String v_rec_emp, String v_mem_card, String v_Room_Code, int v_Mem_Cnt) {

Result resultLogin = new Result();

try {

/**************存储过程使用配置地方***********************************************/

//StoredProcedureQuery 创建存储过程仓库

//createStoredProcedureQuery(name) - 》 name表示 springboot jpa配置的名称:见entity.java的name

//registerStoredProcedureParameter表示存储过程中注册的参数

//ParameterMode 其中的in/out和entity.java中配置一样

StoredProcedureQuery storedProcedureQuery = this.entityManager.createStoredProcedureQuery("p_prod_sale_make");

storedProcedureQuery.registerStoredProcedureParameter("v_rec_emp", String.class, ParameterMode.IN);

storedProcedureQuery.registerStoredProcedureParameter("v_mem_card", String.class, ParameterMode.IN);

storedProcedureQuery.registerStoredProcedureParameter("v_Room_Code", String.class, ParameterMode.IN);

storedProcedureQuery.registerStoredProcedureParameter("v_Mem_Cnt", Integer.class, ParameterMode.IN);

storedProcedureQuery.registerStoredProcedureParameter("v_Err_Msg", String.class, ParameterMode.OUT);

//setParameter 给存储过程配置你要传入的参数

storedProcedureQuery.setParameter("v_rec_emp",v_rec_emp);

storedProcedureQuery.setParameter("v_mem_card", v_mem_card);

storedProcedureQuery.setParameter("v_Room_Code",v_Room_Code);

storedProcedureQuery.setParameter("v_Mem_Cnt", (int) v_Mem_Cnt);

//存储过程执行调用

storedProcedureQuery.execute();

//getOutputParameterValue 存储过程执行后,返回的结果,直接取就可以,返回类型只有一个Object类型

Object v_User_Rht = storedProcedureQuery.getOutputParameterValue("v_Err_Msg");

/*****************************************************************/

return v_User_Rht;

} catch (Exception e) {

resultLogin.setStatus(0);

resultLogin.setData(null);

resultLogin.setMessage("请求失败!");

e.printStackTrace();

return resultLogin;

}finally {

this.entityManager.close();

}

}

以上就是之间配置的所有代码,然后就可以测试结果。

全部配置方法可参考百度:springboot jpa 配置mysql 请求存储过程方法 即可查询到

转载声明:本文为博主原创文章,未经博主允许

如果我的文章有帮助到您,欢迎打赏一下鼓励博主。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。