如何不建实体类,用Mybatis将数据直接返回前端?
摘要:MySQL 统计每个时间段的数量:https:www.cnblogs.comvipsoftp19195343 在Mybatis中不建实体类,可以通过以下几种方式返回数据给前端: Mapper接口 public interface
MySQL 统计每个时间段的数量:https://www.cnblogs.com/vipsoft/p/19195343
在Mybatis中不建实体类,可以通过以下几种方式返回数据给前端:
Mapper接口
public interface VipSoftOrderMapper {
List<Map<String, Object>> getTimePeriodStatistics();
}
Mapper XML
<select id="getTimePeriodStatistics" resultType="java.util.Map">
SELECT
CONCAT(LPAD(hour_range, 2, '0'), ':00~', LPAD(hour_range + 1, 2, '0'), ':00') as timePeriod,
SUM(CASE WHEN HOUR(start_time) = hour_range THEN 1 ELSE 0 END) as startCount,
SUM(CASE WHEN HOUR(end_time) = hour_range THEN 1 ELSE 0 END) as endCount
FROM
custody_order,
(SELECT 0 as hour_range UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
UNION SELECT 10 UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14
UNION SELECT 15 UNION SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19
UNION SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23) hours
GROUP BY
hour_range
ORDER BY
hour_range;
</select>
Service层
@Service
public class StatisticsService {
@Autowired
private VipSoftOrderMapper vipsoftOrderMapper;
@Autowired
private StringRedisTemplate redisTemplate;
public List<Map<String, Object>> getTimePeriodStatistics() {
List<Map<String, Object>> timePeriodStatistics = null;
String redisKey = RedisKey.TIME_PERIOD_STATISTICS + "_" + DateTime.now().year();
if (redisTemplate.hasKey(redisKey)) {
String result = redisTemplate.opsForValue().get(redisKey);
TypeReference<List<Map<String, Object>>> typeReference = new TypeReference<List<Map<String, Object>>>() {};
timePeriodStatistics = com.alibaba.fastjson.JSON.parseObject(result,typeReference);
return timePeriodStatistics;
}
timePeriodStatistics = vipsoftOrder
