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

(原)springbootjpa调用服务器mysql数据库的存储过程方法


一、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

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd">
    <cache name="SysUsers"  maxEntriesLocalHeap="200"  timeToLiveSeconds="600"> </cache>
</ehcache>

二、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 请求存储过程方法 即可查询到


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

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

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_31653405/article/details/99692333
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-18 19:00:19
  • 阅读 ( 1346 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢