Mybatis返回Map<code,name>
总结下Mybatis返回类型为Map<String,String>,且是Map<userCode,userName>这种类型的。
一、创建SessionMapper类,在UserServiceImpl中引入后,调用session.queryUserNameByUserCode()
@Service
public class SessionMapper extends SqlSessionDaoSupport { @Override @Resource public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory); }
/**
* SQL中无传参,写RowBounds.DEFAULT,
* 说明:UserMapper为Mapper的类名, queryUserNameByUserCode为mapper中的接口名(mapper.xml中的SQL的id)
**/ @SuppressWarnings("unchecked")
public Map<String,String> queryUserNameByUserCode() {
MapResultHandler handler = new MapResultHandler();
this.getSqlSession().select(UserMapper.class.getName()+ ".queryUserNameByUserCode", RowBounds.DEFAULT, handler);
Map<String, String> map = handler.getMappedResults();
return map;
}
/**
* SQL中有传参
**/
@SuppressWarnings("unchecked")
public Map<String,String> queryUserNameByUserCode2(List userCodeList) {
MapResultHandler handler = new MapResultHandler();
this.getSqlSession().select(UserMapper.class.getName()+ ".queryUserNameByUserCode2", userCodeList, handler);
Map<String, String> map = handler.getMappedResults();
return map;
}
}
二、创建MapResultHandler
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
public class MapResultHandler implements ResultHandler { @SuppressWarnings("rawtypes") private final Map mappedResults = new HashMap(); @SuppressWarnings("unchecked") @Override public void handleResult (ResultContext context) { @SuppressWarnings("rawtypes") Map map = (Map) context.getResultObject(); //xml配置里面的property的值,对应的列 mappedResults.put(map.get("key"), map.get("value")); } public Map getMappedResults() { return mappedResults; } }
三、UserMapper.class
Map<String, String> queryUserInfo();
四、UserMapper.xml加上:
<resultMap id = "codeNameMap" type = "java.util.HashMap" > <result property="key" column = "userCode"/> <result property="value" column = "userName"/> </resultMap>
SQL语句:
<select id= "queryUserInfo" resultMap="codeNameMap">
select user_code,user_name from user
</select>
这样返回的Map就是以code为key,以name为value的形式了。