使用Java编程和springboot和mybatis框架,连接mysql数据库,给出具体程序,包含Controller层、Service层、Service实现类、Dao层以及Mapper.xml文件,分别统计本周第一天 本月第一天 本年第一天起到今天为止的中奖趋势接口 并对接口使用redis进行缓存处理 过期时间10分钟
时间: 2024-03-26 18:39:28 浏览: 31
毕业设计项目,使用Java语言、mysql数据库,使用springboot+shiro+mybaits框架搭建.zip
好的,以下是具体程序,包含了 Controller 层、Service 层、Service 实现类、Dao 层以及 Mapper.xml 文件。在该程序中,我们使用了 Spring Boot 和 MyBatis 框架来连接 MySQL 数据库,并使用 Redis 对统计结果进行了缓存处理,过期时间为 10 分钟。
Controller 层:
```java
@RestController
@RequestMapping("/lottery")
public class LotteryController {
@Autowired
private LotteryService lotteryService;
@GetMapping("/trend")
public List<Integer> getLotteryTrend() {
return lotteryService.getLotteryTrend();
}
}
```
Service 层:
```java
public interface LotteryService {
List<Integer> getLotteryTrend();
}
```
Service 实现类:
```java
@Service
public class LotteryServiceImpl implements LotteryService {
@Autowired
private LotteryDao lotteryDao;
@Autowired
private RedisTemplate<String, List<Integer>> redisTemplate;
private static final String REDIS_KEY = "lottery_trend";
@Override
public List<Integer> getLotteryTrend() {
List<Integer> lotteryTrend = redisTemplate.opsForValue().get(REDIS_KEY);
if (lotteryTrend != null) {
return lotteryTrend;
}
lotteryTrend = lotteryDao.selectLotteryTrend();
redisTemplate.opsForValue().set(REDIS_KEY, lotteryTrend, 10, TimeUnit.MINUTES);
return lotteryTrend;
}
}
```
Dao 层:
```java
@Mapper
public interface LotteryDao {
List<Integer> selectLotteryTrend();
}
```
Mapper.xml 文件:
```xml
<mapper namespace="com.example.demo.dao.LotteryDao">
<select id="selectLotteryTrend" resultType="java.lang.Integer">
SELECT COUNT(*) FROM lottery WHERE lottery_date >= DATE_FORMAT(NOW(), '%Y-%m-%d') - INTERVAL DAYOFWEEK(NOW())+6 DAY
UNION ALL
SELECT COUNT(*) FROM lottery WHERE lottery_date >= DATE_FORMAT(NOW(), '%Y-%m-01')
UNION ALL
SELECT COUNT(*) FROM lottery WHERE lottery_date >= DATE_FORMAT(NOW(), '%Y-01-01')
</select>
</mapper>
```
在上述程序中,我们在 Mapper.xml 文件中编写了 SQL 语句,用来统计本周第一天、本月第一天、本年第一天起到今天为止的中奖趋势。在 Service 实现类中,我们使用了 RedisTemplate 对统计结果进行了缓存处理,并设置了过期时间为 10 分钟。在 Controller 层中,我们定义了一个 getLotteryTrend() 方法,用来获取统计结果。
阅读全文