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的形式了。

posted on 2020-08-25 09:59  程序员大禹  阅读(572)  评论(0编辑  收藏  举报

导航