sql >> データベース >  >> RDS >> Mysql

hibernateを使用してSpringBootでMySQLストアドプロシージャを呼び出す方法は?

    javax.persistence.StoredProcedureQueryを使用してストアドプロシージャを呼び出すことができます。エンティティで何も宣言する必要はありません。
    プロシージャ呼び出しロジックをサービスに移動してから、コントローラからサービスメソッドを呼び出すことをお勧めします。

    例:

    @Service
    public 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
        }
    }
    

    次に、LoginServiceを挿入した後、コントローラーからこのメソッドを呼び出すことができます。 。



    1. MySQLで列タイプTIMESTAMPをDATETIMEに変更するとどうなりますか?

    2. MySqlテーブル列の1つに一意のランダムな文字列を生成するにはどうすればよいですか?

    3. MySQLでUNIONを使用する場合の「エラー1054(42S22):「order句」の不明な列「…」」を修正

    4. DatabaseMetaDataを使用してmysqlテーブルのコメントを取得します