Mybatis3返回记录如何封装成多条记录成map
1、定义一个Mapper接口方法。
package com.gwolf.dao;
import java.util.Map;
import com.gwolf.bean.Employee;
public interface EmployeeMapper {
public Map<Integer,Object> getEmpByIdReturnMap(Integer id);
}

2、在mapper文件xml中定义sql语句实现。
<select id="getEmpByIdReturnMap" resultType="com.gwolf.bean.Employee">
SELECT e.emp_id, e.emp_name, e.gender, e.email, e.d_id
FROM tbl_emp e where e.emp_id = #{empId}
</select>

3、封装的结果Map<Integer,Object>中键是这条记录的主键,值是封装后的javabean,如何定义使用哪个字段作为主键,添加注解:@MapKey("empId")
package com.gwolf.dao;
import java.util.Map;
import org.apache.ibatis.annotations.MapKey;
import com.gwolf.bean.Employee;
public interface EmployeeMapper {
@MapKey("empId")
public Map<Integer,Object> getEmpByIdReturnMap(Integer id);
}

4、在mybatis单元测试中查询这个map返回结果。
package com.gwolf;
import java.io.InputStream;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.gwolf.bean.Employee;
import com.gwolf.dao.EmployeeMapper;
public class AppTest {
@Test
public void test1() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
Map<Integer,Object> employee = employeeMapper.getEmpByIdReturnMap(1);
System.out.println(employee);
}finally {
sqlSession.close();
}
}
}

5、运行单元测试方法,查看程序的执行结果。

6、我们也可以使用名字作为返回的map的键值。
package com.gwolf.dao;
import java.util.Map;
import org.apache.ibatis.annotations.MapKey;
import com.gwolf.bean.Employee;
public interface EmployeeMapper {
@MapKey("empName")
public Map<String,Object> getEmpByIdReturnMap(Integer id);
}
