Mybatis Как вернуть набор результатов SQL Вместо создания объекта для сопоставления

#java #mybatis #ibatis #spring-mybatis

Вопрос:

У меня есть такой вопрос

 select id, employee_name as name, address from employee  

Чтобы получить результат запроса с помощью Mybatis, как правило, мне нужно создать сотрудника класса, например:

 package com.employee;  public class Employee {  Integer id;  String name;  String address;   public Integer getId() {  return id;  }   public void setId(Integer id) {  this.id = id;  }   public String getName() {  return name;  }   public void setName(String name) {  this.name = name;  }   public String getAddress() {  return address;  }   public void setAddress(String address) {  this.address = address;  } }  

и Mybatis Java mapper:

 package com.employee;  import org.apache.ibatis.annotations.Mapper;  @Mapper public interface EmployeeMapper {  Employee retrieveEmployee(); }  

и Mybatis xml-картограф:

 lt;?xml version="1.0" encoding="UTF-8" ?gt; lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" gt; lt;mapper namespace="com.employee.EmployeeMapper"gt;  lt;resultMap id="retrieveEmployeeResult" type="com.employee.Employee"gt;  lt;id property="id" column="id"/gt;  lt;result property="name" column="employee_name"/gt;  lt;result property="address" column="address"/gt;  lt;/resultMapgt;  lt;select id="retrieveEmployee" resultMap="retrieveEmployeeResult"gt;  select id, employee_name as name, address from employee  lt;/selectgt; lt;/mappergt;  

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

Пример запрос возвращает 2 записи, подобные этой:

 id name address  1 Tom 123 street  2 Mike abc street  

Так что мое ожидание будет чем-то вроде(псевдокода):

 ResultSet results = EmployeeMapper.retrieveEmployee(); System.out.println(results[0].get("id")   "-"   results[0].get("name")   "-"   results[0].get("address"));  // =gt; the result will be: 1-Tom-123 street  

Комментарии:

1. Вы можете указать type="java.util.HashMap" , например.

2. есть три поля