Stored Procedure এর জন্য Input এবং Output Parameters ব্যবস্থাপনা

iBATIS এর সাথে Stored Procedures - আইবাটিস (iBATIS) - Java Technologies

344

iBATIS (বর্তমানে MyBatis) একটি powerful framework যা SQL ভিত্তিক কাস্টম ডেটাবেস অপারেশন সম্পাদন করতে সাহায্য করে। Stored Procedures (এসকিউএল সার্ভারের মধ্যে সঞ্চিত প্রোগ্রাম বা ফাংশন) এর ব্যবস্থাপনা MyBatis এর মাধ্যমে খুব সহজ এবং কার্যকরীভাবে করা যায়। MyBatis-এ input parameters এবং output parameters এর সাথে কাজ করার জন্য , , , ট্যাগ ব্যবহার করা হয়।

এখানে Stored Procedure এর জন্য ইনপুট (input) এবং আউটপুট (output) প্যারামিটার ব্যবস্থাপনা করার একটি বিশদ উদাহরণ দেওয়া হল।


1. Stored Procedure Configuration in iBATIS (MyBatis)

MyBatis-এ স্টোরড প্রোসিডিউর ব্যবহারের জন্য আমরা CallableStatement ব্যবহার করতে পারি। এটা স্টোরড প্রোসিডিউরের সাথে সম্পর্কিত কাস্টম SQL কুয়েরি চালাতে সহায়তা করে এবং ইনপুট ও আউটপুট প্যারামিটারগুলোর জন্য ম্যানেজমেন্ট সহজ করে।

Step 1: Create Stored Procedure in Database

প্রথমে, একটি স্টোরড প্রোসিডিউর তৈরি করতে হবে যা ইনপুট এবং আউটপুট প্যারামিটার গ্রহণ করবে। নিচে একটি উদাহরণ দেওয়া হল:

DELIMITER CREATEPROCEDUREGetEmployeeInfo(INempidINT,OUTempnameVARCHAR(255),OUTempemailVARCHAR(255))BEGINSELECTname,emailINTOempname,empemailFROMemployeesWHEREid=empid;END

CREATE PROCEDURE GetEmployeeInfo(
    IN emp_id INT, 
    OUT emp_name VARCHAR(255), 
    OUT emp_email VARCHAR(255)
)
BEGIN
    SELECT name, email 
    INTO emp_name, emp_email 
    FROM employees 
    WHERE id = emp_id;
END

DELIMITER ;

Explanation:

  • IN emp_id: এটি ইনপুট প্যারামিটার যা employee id প্রদান করে।
  • OUT emp_name, emp_email: এটি আউটপুট প্যারামিটার যা name এবং email আউটপুট করে।

2. MyBatis Configuration

MyBatis-এ Stored Procedure-এ ইনপুট এবং আউটপুট প্যারামিটার ব্যবহার করার জন্য Mapper XML এবং Mapper Interface তৈরি করতে হবে।

Step 2: Configure MyBatis Mapper XML for Stored Procedure

<mapper namespace="com.yourpackage.mapper.EmployeeMapper">

    <!-- Call stored procedure with input and output parameters -->
    <select id="getEmployeeInfo" statementType="CALLABLE" resultMap="employeeResultMap">
        {CALL GetEmployeeInfo(
            #{empId, mode=IN, jdbcType=INTEGER},
            #{empName, mode=OUT, jdbcType=VARCHAR},
            #{empEmail, mode=OUT, jdbcType=VARCHAR}
        )}
    </select>

</mapper>

Explanation:

  • statementType="CALLABLE": এটি নির্দেশ করে যে কুয়েরি একটি স্টোরড প্রোসিডিউর কল করবে।
  • #{empId, mode=IN, jdbcType=INTEGER}: এখানে empId ইনপুট প্যারামিটার হিসেবে ব্যবহার করা হচ্ছে।
  • #{empName, mode=OUT, jdbcType=VARCHAR}: empName আউটপুট প্যারামিটার হিসেবে ব্যবহার করা হচ্ছে।
  • #{empEmail, mode=OUT, jdbcType=VARCHAR}: empEmail আউটপুট প্যারামিটার হিসেবে ব্যবহৃত হবে।

Step 3: Create Mapper Interface

এখন, একটি Mapper Interface তৈরি করতে হবে যেখানে স্টোরড প্রোসিডিউরের জন্য মেথড থাকবে।

public interface EmployeeMapper {

    void getEmployeeInfo(@Param("empId") int empId, 
                         @Param("empName") String empName, 
                         @Param("empEmail") String empEmail);
}

Explanation:

  • @Param: @Param অ্যানোটেশনটি MyBatis-কে জানায় যে কোন প্যারামিটারটি ইনপুট এবং আউটপুট হিসেবে পাঠানো হচ্ছে।

3. Using the Stored Procedure in Java

Java কোডে SqlSession ব্যবহার করে আপনি getEmployeeInfo মেথডটি কল করতে পারেন।

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.exceptions.PersistenceException;

import java.io.Reader;

public class EmployeeApp {

    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory = null;
        SqlSession session = null;

        try {
            // Step 1: Initialize SqlSessionFactory
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

            // Step 2: Open a new session
            session = sqlSessionFactory.openSession();

            // Step 3: Get Mapper
            EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);

            // Step 4: Prepare input and output variables
            int empId = 1;
            String empName = null;
            String empEmail = null;

            // Step 5: Call stored procedure
            employeeMapper.getEmployeeInfo(empId, empName, empEmail);

            // Step 6: Output result
            System.out.println("Employee Name: " + empName);
            System.out.println("Employee Email: " + empEmail);

            // Step 7: Commit and close session
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (session != null) {
                session.close();
            }
        }
    }
}

Explanation:

  • session.getMapper(EmployeeMapper.class): এটি MyBatis Mapper ইন্টারফেস ব্যবহার করে স্টোরড প্রোসিডিউর মেথড কল করে।
  • employeeMapper.getEmployeeInfo(empId, empName, empEmail): এখানে স্টোরড প্রোসিডিউরটি কল করা হচ্ছে এবং প্যারামিটারগুলি ইনপুট ও আউটপুট হিসাবে সেট করা হচ্ছে।
  • empName এবং empEmail: এই আউটপুট প্যারামিটারগুলি স্টোরড প্রোসিডিউর থেকে রিটার্ন হবে।

4. Handling Output Parameters

MyBatis-এ আউটপুট প্যারামিটারগুলিকে সঠিকভাবে হ্যান্ডেল করার জন্য @Param অ্যানোটেশন এবং resultMap ব্যবহার করা হয়।

Example: Handling Output Parameters Using ResultMap

<resultMap id="employeeResultMap" type="Employee">
    <result property="name" column="emp_name" />
    <result property="email" column="emp_email" />
</resultMap>
  • <resultMap>: এই মাপিংটি আউটপুট প্যারামিটারগুলির মানকে Employee অবজেক্টের প্রপার্টির সাথে ম্যাপ করে।

iBATIS (MyBatis) এ স্টোরড প্রোসিডিউরের input এবং output প্যারামিটার ব্যবস্থাপনা খুবই শক্তিশালী এবং নমনীয়। SqlSession এর মাধ্যমে CallableStatement ব্যবহার করে MyBatis-এ স্টোরড প্রোসিডিউর কল করা যায় এবং IN, OUT প্যারামিটারগুলি সহজেই হ্যান্ডল করা যায়।

  • Input Parameters: স্টোরড প্রোসিডিউরের ইনপুট প্যারামিটার গুলি #{paramName, mode=IN} এভাবে ব্যবহার করা হয়।
  • Output Parameters: আউটপুট প্যারামিটারগুলি #{paramName, mode=OUT} আকারে ব্যবহার করা হয়।
  • Mapper XML and Java: Mapper XML ফাইল এবং Mapper Interface এর মাধ্যমে আপনি SQL কুয়েরি এবং প্রোসিডিউর ম্যানেজ করতে পারবেন।
Content added By
Promotion

Are you sure to start over?

Loading...