Question:how to iBATIS - Create Operation?


To perform any CRUD ( Create, Write, Update and Delete) operation using iBATIS, you would need to create a POJOs (Plain Old Java Objects) class corresponding to the table. This class describes the objects that will "model" database table rows.
The POJO class would have implementation for all the methods required to perform desired operations.
We have following EMPLOYEE table in MySQL:
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
Employee POJO Class:
We would create Employee class in file as follows:
public class Employee {
  private int id;
  private String first_name; 
  private String last_name;   
  private int salary;  
  /* Define constructors for the Employee class. */
  public Employee() {}
  public Employee(String fname, String lname, int salary) {
    this.first_name = fname;
    this.last_name = lname;
    this.salary = salary;
} /* End of Employee */
You can define methods to set individual fields in the table. Next chapter would show you how to get value of individual fields.
Employee.xml File:
To define SQL mapping statement using iBATIS, we would use tag and inside this tag definition we would define an "id" which will be used in file for executing SQL INSERT query on database.
PUBLIC "-// SQL Map 2.0//EN"
   insert into EMPLOYEE(first_name, last_name, salary)
   values (#first_name#, #last_name#, #salary#)
      select last_insert_id() as id
Here parameterClass: could take a value as string, int, float, double or any class object based on requirement. In this example we would pass Employee object as a parameter while calling insert method of SqlMap class.
If your database table uses an IDENTITY, AUTO_INCREMENT, or SERIAL column or you have defined a SEQUENCE/GENERATOR, you can use the element in an statement to use or return that database-generated value. File:
This file would have application level logic to insert records in the Employee table:
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.sql.SQLException;
import java.util.*;
public class IbatisInsert{
  public static void main(String[] args)
   throws IOException,SQLException{
   Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
   SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
   /* This would insert one record in Employee table. */
   System.out.println("Going to insert record.....");
   Employee em = new Employee("Zara", "Ali", 5000);
   smc.insert("Employee.insert", em);
   System.out.println("Record Inserted Successfully ");
Compilation and Run:
Here are the steps to compile and run the above mentioned software. Make sure you have set PATH and CLASSPATH appropriately before proceeding for the compilation and execution.
Create Employee.xml as shown above.
Create as shown above and compile it.
Create as shown above and compile it.
Execute IbatisInsert binary to run the program.
You would get following result, and a record would be created in EMPLOYEE table.
$java IbatisInsert
Going to insert record.....
Record Inserted Successfully
Go and check your EMPLOYEE table, it should have following result:
mysql> select * from EMPLOYEE;
| id | first_name | last_name | salary |
|  1 | Zara       | Ali       |   5000 |
1 row in set (0.00 sec)

asked Sep 13, 2013 in iBATIS by ashish singh
edited Sep 12, 2013
0 votes

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
Anti-spam verification:
To avoid this verification in future, please log in or register.