Json 如何从Spring调用存储过程
如何在spring中通过存储过程将数据插入表中 谁能举个例子吗。我的存储过程有一些自动生成的值Json 如何从Spring调用存储过程,json,spring,spring-mvc,spring-boot,stored-procedures,Json,Spring,Spring Mvc,Spring Boot,Stored Procedures,如何在spring中通过存储过程将数据插入表中 谁能举个例子吗。我的存储过程有一些自动生成的值 CREATE PROCEDURE [dbo].[usp_employee_insert] @full_name varchar(75),@gender varchar(6), @department varchar(25), _ @position varchar(50),@salary float AS BEGIN INSERT INTO employees (full_na
CREATE PROCEDURE [dbo].[usp_employee_insert]
@full_name varchar(75),@gender varchar(6), @department varchar(25), _
@position varchar(50),@salary float
AS
BEGIN
INSERT INTO employees (full_name,gender,department,position,salary)
VALUES (@full_name,@gender,@department,@position,@salary)
END
应该是这样的:
public class UspEmployeeInsert extends StoredProcedure {
private final String NAME = "usp_employee_insert";
public UspEmployeeInsert(DataSource dataSource) {
setDataSource(dataSource);
setSql(NAME);
declareParameter(new SqlParameter("full_name", Types.VARCHAR));
declareParameter(new SqlParameter("gender", Types.VARCHAR));
declareParameter(new SqlParameter("department", Types.DATE));
declareParameter(new SqlParameter("position", Types.VARCHAR));
declareParameter(new SqlParameter("salary", Types.FLOAT));
compile();
}
public void execute(
String fullName,
String gender,
Date deparment,
String position,
Float salary){
final Map<String, Object> parameters = new HashMap<>(5);
parameters.put("full_name", fullName);
parameters.put("gender", gender);
parameters.put("department", deparment);
parameters.put("position", position);
parameters.put("salary", salary);
execute(parameters);
}
}
首先,您应该添加一个
EntityManager
来访问数据库:
@PersistenceContext
private EntityManager entityManager;
此外,您还应该向类中添加storedProcedureRequesty
接口,这样您就可以使用多种方法与存储过程进行交互,例如registerStoredProcedureParameter
,setParameter
,execute
假设您有一个具有存储过程中提到的属性的Person
实体,您可以将此代码片段作为示例:
import javax.persistence.EntityManager;
import javax.persistence.ParameterMode;
import javax.persistence.PersistenceContext;
import javax.persistence.StoredProcedureQuery;
import org.springframework.stereotype.Service;
import your.entity.package.Person;
@Service
public class StoredProcedureManagement {
@PersistenceContext
private EntityManager entityManager;
public void callStoredProcedure(Person person) {
// invoking your sp
StoredProcedureQuery spInsert = entityManager.createStoredProcedureQuery("dbo.usp_employee_insert");
// registring sp parameters
spInsert.registerStoredProcedureParameter("full_name", String.class, ParameterMode.IN);
spInsert.registerStoredProcedureParameter("gender", String.class, ParameterMode.IN);
spInsert.registerStoredProcedureParameter("department", String.class, ParameterMode.IN);
spInsert.registerStoredProcedureParameter("position", String.class, ParameterMode.IN);
spInsert.registerStoredProcedureParameter("salary", Float.class, ParameterMode.IN);
// setting the parameters
spInsert.setParameter("full_name", person.getFullName());
spInsert.setParameter("gender", person.getGender());
spInsert.setParameter("department", person.getDepartment());
spInsert.setParameter("position", person.getPosition());
spInsert.setParameter("salary", person.getSalary());
// executing the sp
spInsert.execute();
}
}
import javax.persistence.EntityManager;
import javax.persistence.ParameterMode;
import javax.persistence.PersistenceContext;
import javax.persistence.StoredProcedureQuery;
import org.springframework.stereotype.Service;
import your.entity.package.Person;
@Service
public class StoredProcedureManagement {
@PersistenceContext
private EntityManager entityManager;
public void callStoredProcedure(Person person) {
// invoking your sp
StoredProcedureQuery spInsert = entityManager.createStoredProcedureQuery("dbo.usp_employee_insert");
// registring sp parameters
spInsert.registerStoredProcedureParameter("full_name", String.class, ParameterMode.IN);
spInsert.registerStoredProcedureParameter("gender", String.class, ParameterMode.IN);
spInsert.registerStoredProcedureParameter("department", String.class, ParameterMode.IN);
spInsert.registerStoredProcedureParameter("position", String.class, ParameterMode.IN);
spInsert.registerStoredProcedureParameter("salary", Float.class, ParameterMode.IN);
// setting the parameters
spInsert.setParameter("full_name", person.getFullName());
spInsert.setParameter("gender", person.getGender());
spInsert.setParameter("department", person.getDepartment());
spInsert.setParameter("position", person.getPosition());
spInsert.setParameter("salary", person.getSalary());
// executing the sp
spInsert.execute();
}
}