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
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 কুয়েরি এবং প্রোসিডিউর ম্যানেজ করতে পারবেন।
Read more