iBATIS - Utwórz operację
Aby wykonać dowolną operację tworzenia, odczytu, aktualizacji i usuwania (CRUD) za pomocą iBATIS, należy utworzyć klasę zwykłych starych obiektów Java (POJO) odpowiadającą tabeli. Ta klasa opisuje obiekty, które będą „modelować” wiersze tabeli bazy danych.
Klasa POJO miałaby implementację dla wszystkich metod wymaganych do wykonania żądanych operacji.
Załóżmy, że w MySQL mamy następującą tabelę PRACOWNIKÓW -
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)
);
Klasa pracownicza POJO
Utworzylibyśmy klasę Employee w pliku Employee.java w następujący sposób -
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 */
Możesz zdefiniować metody ustawiania poszczególnych pól w tabeli. W następnym rozdziale wyjaśniono, jak uzyskać wartości poszczególnych pól.
Plik Employee.xml
Aby zdefiniować instrukcję mapowania SQL za pomocą iBATIS, użylibyśmy znacznika <insert>, a wewnątrz tej definicji znacznika zdefiniowalibyśmy „id”, który zostanie użyty w pliku IbatisInsert.java do wykonania zapytania SQL INSERT w bazie danych.
<?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>
Tutaj parameterClass −może przyjąć wartość jako string, int, float, double lub dowolny obiekt klasy na podstawie wymagania. W tym przykładzie przekazalibyśmy obiekt Employee jako parametr podczas wywoływania metody insert klasy SqlMap.
Jeśli tabela bazy danych używa kolumny IDENTITY, AUTO_INCREMENT lub SERIAL albo zdefiniowano SEQUENCE / GENERATOR, można użyć elementu <selectKey> w instrukcji <insert>, aby użyć lub zwrócić wartość wygenerowaną przez bazę danych.
Plik IbatisInsert.java
Ten plik miałby logikę na poziomie aplikacji do wstawiania rekordów w tabeli 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 ");
}
}
Kompilacja i uruchomienie
Oto kroki, aby skompilować i uruchomić wyżej wymienione oprogramowanie. Upewnij się, że odpowiednio ustawiłeś PATH i CLASSPATH przed przystąpieniem do kompilacji i wykonania.
- Utwórz plik Employee.xml, jak pokazano powyżej.
- Utwórz plik Employee.java, jak pokazano powyżej, i skompiluj go.
- Utwórz plik IbatisInsert.java, jak pokazano powyżej, i skompiluj go.
- Uruchom plik binarny IbatisInsert, aby uruchomić program.
Otrzymasz następujący wynik i zostanie utworzony rekord w tabeli EMPLOYEE.
$java IbatisInsert
Going to insert record.....
Record Inserted Successfully
Jeśli zaznaczysz tabelę PRACOWNIK, powinna wyświetlić następujący wynik -
mysql> select * from EMPLOYEE;
+----+------------+-----------+--------+
| id | first_name | last_name | salary |
+----+------------+-----------+--------+
| 1 | Zara | Ali | 5000 |
+----+------------+-----------+--------+
1 row in set (0.00 sec)