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>!!!

一個下午的小成果,給自己一朵小紅花❀獎勵~

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM