mapper.xml文件老是写错,今天记录下:
1、mapper.xml,参数问题:使用reqVO
<select id="statisticByAnimal"
resultType="cn.iocoder.yudao.module.identify.dal.dataobject.result.ResultDO" >
SELECT lng,lat,animal_id,sum(result_sum) as result_sum FROM identify_result
<where>
<if test="reqVO.animalId != null">
AND animal_id = #{reqVO.animalId}
</if>
and deleted=0
</where>
GROUP BY lng,lat,animal_id
</select>
调用的方式:
List<ResultDO> statisticByMonthRange(@Param("reqVO") ResultPageReqVO pageReqVO);
2、mapper.xml,参数问题:不使用reqVO,直接通过对象
<select id="statAnimalBeastByMonthCount" resultType="cn.iocoder.yudao.module.isr.controller.admin.animalbeast.vo.AnimalBeastPageReqVO"> select TO_CHAR(create_time,'MM') AS create_month, count(1) as coustA from isr_animal_beast t <where> AND deleted=0 <if test="pid != null and pid !=''"> AND t.PID=#{pid} </if> <if test="speciesName != null and speciesName !=''"> AND t.SPECIES_NAME=#{speciesName} </if> </where> group by TO_CHAR(create_time,'MM') </select>
调用的方式:
List<AnimalBirdsVO> statAnimalBirdsByMonthCount(AnimalBirdsPageReqVO reqVO);
3、返回类型问题:可以用:resultType="map"
调用使用:List<Map<String, Object>>
下面是完整的代码:
mapper.xml
<select id="statAnimalBirdsByMonthCount" resultType="map">
select TO_CHAR(create_time,'MM') AS create_month, count(1) as coustA
from ISR_ANIMAL_BIRDS t
<where>
AND deleted=0
<if test="reqVO.pid != null and reqVO.pid !=''">
AND t.PID=#{pid}
</if>
<if test="reqVO.speciesName != null and reqVO.speciesName !=''">
AND t.SPECIES_NAME=#{reqVO.speciesName}
</if>
</where>
group by TO_CHAR(create_time,'MM')
</select>
mapper.java
List<Map<String, Object>> statAnimalBirdsByMonthCount(@Param("reqVO") AnimalBirdsPageReqVO reqVO);
控制层或者业务层调用:
@GetMapping("/statAnimalBirdsByMonthCount")
@Operation(summary = "获得统计")
public CommonResult<List<Map<String, Object>>> statAnimalBirdsByMonth(@Valid AnimalBirdsPageReqVO pageReqVO) {
List<Map<String, Object>> list = animalBirdsMapper.statAnimalBirdsByMonthCount(pageReqVO);
list.forEach(map->{
Object month = map.get("create_month");
System.out.println("month="+month);
});
return success(list);
}