我们做查询/报表的时候多用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>即可 .