iBATIS - Operación de lectura
Discutimos, en el último capítulo, cómo realizar la operación CREAR en una tabla usando iBATIS. Este capítulo explica cómo leer una tabla con iBATIS.
Tenemos la siguiente tabla EMPLOYEE en 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)
);
Esta tabla tiene solo un registro de la siguiente manera:
mysql> select * from EMPLOYEE;
+----+------------+-----------+--------+
| id | first_name | last_name | salary |
+----+------------+-----------+--------+
| 1 | Zara | Ali | 5000 |
+----+------------+-----------+--------+
1 row in set (0.00 sec)
Clase POJO para empleados
Para realizar la operación de lectura, modificaríamos la clase Employee en Employee.java de la siguiente manera:
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;
}
/* Here are the method definitions */
public int getId() {
return id;
}
public String getFirstName() {
return first_name;
}
public String getLastName() {
return last_name;
}
public int getSalary() {
return salary;
}
} /* End of Employee */
Archivo Employee.xml
Para definir la declaración de mapeo SQL usando iBATIS, agregaríamos la etiqueta <select> en el archivo Employee.xml y dentro de esta definición de etiqueta, definiríamos un "id" que se usará en el archivo IbatisRead.java para ejecutar la consulta SQL SELECT en la base de datos.
<?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>
<select id="getAll" resultClass="Employee">
SELECT * FROM EMPLOYEE
</select>
</sqlMap>
Aquí no usamos la cláusula WHERE con la instrucción SQL SELECT. Demostraremos, en el siguiente capítulo, cómo puede usar la cláusula WHERE con la instrucción SELECT y cómo puede pasar valores a esa cláusula WHERE.
Archivo IbatisRead.java
Este archivo tiene lógica de nivel de aplicación para leer registros de la tabla Empleado -
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 IbatisRead{
public static void main(String[] args)throws IOException,SQLException{
Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
/* This would read all records from the Employee table. */
System.out.println("Going to read records.....");
List <Employee> ems = (List<Employee>)
smc.queryForList("Employee.getAll", null);
Employee em = null;
for (Employee e : ems) {
System.out.print(" " + e.getId());
System.out.print(" " + e.getFirstName());
System.out.print(" " + e.getLastName());
System.out.print(" " + e.getSalary());
em = e;
System.out.println("");
}
System.out.println("Records Read Successfully ");
}
}
Compilación y ejecución
Estos son los pasos para compilar y ejecutar el software mencionado anteriormente. Asegúrese de haber configurado PATH y CLASSPATH correctamente antes de proceder con la compilación y ejecución.
- Cree Employee.xml como se muestra arriba.
- Cree Employee.java como se muestra arriba y compílelo.
- Cree IbatisRead.java como se muestra arriba y compílelo.
- Ejecute IbatisRead binary para ejecutar el programa.
Obtendría el siguiente resultado y se leería un registro de la tabla EMPLOYEE de la siguiente manera:
Going to read records.....
1 Zara Ali 5000
Record Reads Successfully