我们做查询/报表的时候多用map/list<map>来实现查询数据的返回,那么mybatis如何实现?
1/在mapper.xml里面增加两个select function, 他们的resultType都指定为HashMap:
<select id="selectListMap" parameterType="java.lang.String" resultType="java.util.HashMap">
select
fa_login, fa_phone, fa_name, fa_status, fa_type, fa_create_by, fa_create_dt, fa_update_by,
fa_update_dt, fa_email, fa_passwd, fa_remark, fa_staff_id, fa_last_notify
from public.ta_user
where fa_login=#{faLogin,jdbcType=VARCHAR}
</select>
<select id="selectMap" parameterType="java.lang.String" resultType="java.util.HashMap">
select
fa_login, fa_phone, fa_name, fa_status, fa_type, fa_create_by, fa_create_dt, fa_update_by,
fa_update_dt, fa_email, fa_passwd, fa_remark, fa_staff_id, fa_last_notify
from public.ta_user
where fa_login=#{faLogin,jdbcType=VARCHAR}
</select>
修改interface增加两个接口方法,
List<Map<String,Object>> selectListMap(String faLogin);
Map<String,Object> selectMap(String faLogin);
测试:
@Test
public void testMapAndListMap(){
SqlSession lvSess=MybatisUtils.getSession();
try
{
TaUserMapper lvUserMapper=lvSess.getMapper(TaUserMapper.class);
Map<String,Object> lvMap= lvUserMapper.selectMap("admin");
System.out.println(lvMap);
List<Map<String,Object>> lvListMap=lvUserMapper.selectListMap("admin");
System.out.println(lvListMap);
}
finally{
MybatisUtils.closeSession(lvSess);
}
}
总结: 两者在xml里面的resulttype均指定为hashmap,但interface里面,则一个是返回map,一个是返回list<map>即可 .