如果想輸出多張表中的內容或者不是一張表里面的內容(聚集函數),而且又不想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>!!!
一個下午的小成果,給自己一朵小紅花❀獎勵~