Учебники

iBATIS — Создать операцию

Чтобы выполнить любую операцию Create, Read, Update и Delete (CRUD) с использованием iBATIS, вам нужно создать класс Plain Old Java Objects (POJO), соответствующий таблице. Этот класс описывает объекты, которые будут «моделировать» строки таблицы базы данных.

Класс POJO будет иметь реализацию для всех методов, необходимых для выполнения желаемых операций.

Предположим, у нас есть следующая таблица EMPLOYEE в MySQL:

CREATE TABLE EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id)
);

Сотрудник POJO класса

Мы создали бы класс Employee в файле Employee.java следующим образом:

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 */

Вы можете определить методы для установки отдельных полей в таблице. Следующая глава объясняет, как получить значения отдельных полей.

Файл Employee.xml

Чтобы определить оператор отображения SQL с использованием iBATIS, мы использовали бы тег <insert>, а внутри этого определения тега мы бы определили «id», который будет использоваться в файле IbatisInsert.java для выполнения запроса SQL INSERT к базе данных.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="Employee"> 

   <insert id="insert" parameterClass="Employee">
      insert into EMPLOYEE(first_name, last_name, salary)
      values (#first_name#, #last_name#, #salary#)

      <selectKey resultClass="int" keyProperty="id">
         select last_insert_id() as id
      </selectKey>
   </insert> 

</sqlMap>

Здесь parameterClass — может принимать значение в виде string, int, float, double или любого объекта класса в зависимости от требования. В этом примере мы передадим объект Employee в качестве параметра при вызове метода вставки класса SqlMap.

Если ваша таблица базы данных использует столбец IDENTITY, AUTO_INCREMENT или SERIAL или вы определили SEQUENCE / GENERATOR, вы можете использовать элемент <selectKey> в операторе <insert>, чтобы использовать или вернуть это значение, сгенерированное базой данных.

Файл IbatisInsert.java

Этот файл будет иметь логику прикладного уровня для вставки записей в таблицу Employee —

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import java.io.*;
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 ");
   }
} 

Компиляция и запуск

Вот шаги для компиляции и запуска вышеупомянутого программного обеспечения. Убедитесь, что вы правильно установили PATH и CLASSPATH, прежде чем приступить к компиляции и выполнению.

  • Создайте Employee.xml, как показано выше.
  • Создайте Employee.java, как показано выше, и скомпилируйте его.
  • Создайте IbatisInsert.java, как показано выше, и скомпилируйте его.
  • Выполните двоичный файл IbatisInsert, чтобы запустить программу.

Вы получите следующий результат, и запись будет создана в таблице EMPLOYEE.

$java IbatisInsert
Going to insert record.....
Record Inserted Successfully

Если вы проверите таблицу EMPLOYEE, она должна отобразить следующий результат: