Mybatis传入参数map,读取map<原创>

如果想输出多张表中的内容或者不是一张表里面的内容(聚集函数),而且又不想resultMap成一个实体,那就用map吧(研究了一下午的成果...)

<select id="getUaMapByTimestamp" parameterType="hashmap"  resultType="hashmap">  
      select tName=t.type_Name, countName=count(t.type_Name)
      from Fault f, device_info d ,device_type t
      where f.handle_status = 1 and f.repair = 0 and f.device_id = d.device_id and t.type_id = d.type_id
      <if test="statDateFrom != null">and f.happen_time <![CDATA[>=]]> #{statDateFrom}</if>
     <if test="statDateTo != null">and f.happen_time <![CDATA[<=]]> #{statDateTo}</if>
       group by t.type_Name 
    </select>

这样就能是搜索结果变成hashmap类型(别问我题目是map,怎么在讲hashmap...)

java代码:

@Repository
public class FaultDao extends AbstractBasicDaoImpl<Fault, Long> implements IFaultDao {

    private static final String    NAMESPACE = "com.device.entity.Fault";
    
    protected SqlSession mySqlSession;
    
    
    public SqlSession getMySqlSession() {
        return mySqlSession;
    }

    @Autowired
    public void setMySqlSession(SqlSession mySqlSession) {
        this.mySqlSession = mySqlSession;
    }


    @Override
    protected String getNamespace() {
        return NAMESPACE;
    }


    @Override
    public List<HashMap> findStatisticDevicetype(Map testMap) {
        List<HashMap> aa = new ArrayList<HashMap>();
        aa = mySqlSession.selectList("getUaMapByTimestamp",testMap);
        return aa;
    }

}

关键部分是声明和注入本类自己的sqlSession实例,由于本类继承AbstractBasicDaoImpl<Fault, Long>,而AbstractBasicDaoImpl<Fault, Long>又继承相关类,如果不自己声明sqlSession实例的话,默认会调用父类是sqlSession实例,而由于类之间的继承关系,最后selectList的类型会变成List<Fault>!!!

一个下午的小成果,给自己一朵小红花❀奖励~

 

 

posted @ 2013-01-17 19:04  人生如若初见  阅读(11749)  评论(1编辑  收藏  举报