#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. есть три поля