您可以使用javax.persistence.StoredProcedureQuery调用存储过程。您甚至不需要在实体上声明任何内容。
我建议将过程调用逻辑移至服务,然后从控制器中调用服务方法。
例如:
@Servicepublic class LoginServiceImpl implements LoginService { @PersistenceContext private EntityManager entityManager; public Boolean checkUsernameAndPassword(String username, String password) { //"login" this is the name of your procedure StoredProcedureQuery query = entityManager.createStoredProcedureQuery("login"); //Declare the parameters in the same order query.registerStoredProcedureParameter(1, String.class, ParameterMode.IN); query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN); query.registerStoredProcedureParameter(3, Integer.class, ParameterMode.OUT); query.registerStoredProcedureParameter(4, String.class, ParameterMode.OUT); //Pass the parameter values query.setParameter(1, username); query.setParameter(2, password); //Execute query query.execute(); //Get output parameters Integer outCode = (Integer) query.getOutputParameterValue(3); String outMessage = (String) query.getOutputParameterValue(4); return true; //enter your condition }}
然后,您可以在注入之后从Controller调用此方法
LoginService。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)