Mapperxml SQL文件:
<select id="selectLiveActivityL" resultType="Map">
????SELECT IFNULL(Set_Value,0) AS Set_Value FROM baseset WHERE Base_Set_Id IN (3,4,5)
</select>
取出baseset 表中Base_Set_Id为3,4,5的数据,如下:
Mapper********接口文件:
List<Map<String, Object>> selectLiveActivityL();
在控制层或者实现层取值:
List<Map<String, Object>> listMapO = service.selectLiveActivityL();
listMapO.get(0).get("Set_Value").toString();//第一个值
listMapO.get(1).get("Set_Value").toString();//第二个值
listMapO.get(2).get("Set_Value").toString();//第三个值
前面都单列取值:
类似有倆列的:
List<Map<String, Object>> listMapF = service.selectLookLiveActivityE();
listMapF.get(0).get("Set_Value").toString();
listMapF.get(0).get("Set_Value_Duplicate").toString()
get(0)控制第几行;
get("Set_Value")控制第几列;
返回map和返回映射到实体类的优缺点:
优点:
首先从上述代码就直接可以看出来,返回为map类型,使用Map作为接收类型时,通常能够在传参到持久层这一过程中省去很多麻烦。前端请求及参数到达Action或者Controller时通常使用map来进行接收,使用map作为传递类型可以不用再将数据封装为Bean类型再去根据实体属性一一填充,直接通过Service和Dao以map类型将数据传到map配置SQL文件当中,省去很多数据转换环节。
再执行完SQL语句返回时制定map类型返回,不管是单条数据还是List都可以快速编写并返回给前端。这种方式在处理多表查询时避免了编写大量的实体类和属性字段定义,减少了很多中间流程。
缺点:
缺点也一样明显,没有了实体类,自己就需要记好map中的key-value映射关系,其次其数据不能像映射到实体类中那样,重写getter方法。当另外一个同事来接手和维护时,因为没有了实体类,他只能通过查询map调试,或者查看才能知晓。也不利于后期的维护。