开发手册 欢迎您!
软件开发者资料库

iBATIS - 结果图

iBATIS的| iBATIS结果图|使用ResultMaps读取操作|使用iBATIS的CRUD - 适用于初学者的免费iBATIS教程,参考手册和指南。了解iBATIS框架如何从环境设置,读取,写入,更新,使用结果映射,动态和内联SQL删除数据库记录开始。

resultMap元素是iBATIS中最重要和最强大的元素.您可以使用iBATIS ResultMap减少高达90%的JDBC编码,在某些情况下,它允许您执行JDBC甚至不支持的操作.

ResultMaps的设计就是这样简单的语句根本不需要显式的结果映射,更复杂的语句只需要描述关系的绝对必要.

本章仅提供iBATIS ResultMaps的简单介绍.

我们在MySQL中有以下EMPLOYEE表 :

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));

此表有两条记录,如下 :

mysql> select * from EMPLOYEE;+----+------------+-----------+--------+| id | first_name | last_name | salary |+----+------------+-----------+--------+|  1 | Zara       | Ali       |   5000 ||  2 | Roma       | Ali       |   3000 |+----+------------+-----------+--------+2 row in set (0.00 sec)

员工POJO类

要使用iBATIS ResultMap,您无需修改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;   }   /* Here are the required method definitions */   public int getId() {      return id;   }   public void setId(int id) {      this.id = id;   }   public String getFirstName() {      return first_name;   }   public void setFirstName(String fname) {      this.first_name = fname;   }   public String getLastName() {      return last_name;   }   public void setlastName(String lname) {      this.last_name = lname;   }   public int getSalary() {      return salary;   }   public void setSalary(int salary) {      this.salary = salary;   }} /* End of Employee */

Employee.xml文件

在这里,我们将修改Employee.xml以引入< resultMap>标签.此标记将具有在我们的< select>中运行此resultMap所需的id. tag的resultMap属性.

            INSERT INTO EMPLOYEE(first_name, last_name, salary)      values (#first_name#, #last_name#, #salary#)               select last_insert_id() as id                     SELECT * FROM EMPLOYEE               UPDATE EMPLOYEE      SET    first_name = #first_name#      WHERE  id = #id#                DELETE FROM EMPLOYEE      WHERE  id = #id#                                              SELECT * FROM EMPLOYEE      WHERE id=#id#   

IbatisResultMap.java文件

此文件具有应用程序级逻辑,可使用ResultMap&minus读取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 IbatisResultMap{   public static void main(String[] args)   throws IOException,SQLException{      Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");      SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);      int id = 1;      System.out.println("Going to read record.....");      Employee e = (Employee)smc.queryForObject ("Employee.useResultMap", id);      System.out.println("ID:  " + e.getId());      System.out.println("First Name:  " + e.getFirstName());      System.out.println("Last Name:  " + e.getLastName());      System.out.println("Salary:  " + e.getSalary());      System.out.println("Record read Successfully ");   } }

编译并运行

以下是编译和运行的步骤上述软件.在继续进行编译和执行之前,请确保已正确设置PATH和CLASSPATH.

  • 如上所示创建Employee.xml.

  • 如上所示创建Employee.java并进行编译.

  • 如上所示创建IbatisResultMap.java并进行编译.

  • 执行IbatisResultMap二进制文件以运行程序.

您将获得以下结果,这是EMPLOYEE表上的读取操作.

Going to read record.....ID:  1First Name:  ZaraLast Name:  AliSalary:  5000Record read Successfully