使用Java编程和springboot和mybatis框架,连接mysql数据库,给出具体程序,包含Controller层、Service层、Service实现类、Dao层以及Mapper.xml,获取中奖奖品的周排名 月排名 年排名 降序排列 取前5条数据
时间: 2024-03-27 13:34:55 浏览: 196
好的,下面是使用 Java 编程和 Spring Boot 和 MyBatis 框架连接 MySQL 数据库的程序示例。本示例包含了 Controller 层、Service 层、Service 实现类、DAO 层以及 Mapper.xml,以获取中奖奖品的周排名、月排名、年排名、降序排列取前 5 条数据。
首先,在 pom.xml 文件中添加以下依赖:
```xml
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
```
然后,创建一个中奖奖品实体类 Prize,并在其中定义属性和相应的 getter 和 setter 方法:
```java
public class Prize {
private Integer id;
private String name;
private Double amount;
private Date date;
// 省略 getter 和 setter 方法
}
```
接下来,创建一个 DAO 接口 PrizeDao,定义获取奖品排名的方法:
```java
public interface PrizeDao {
List<Prize> getWeeklyRanking();
List<Prize> getMonthlyRanking();
List<Prize> getYearlyRanking();
}
```
然后,创建一个 Mapper.xml 文件 PrizeMapper.xml,定义相应的 SQL 语句:
```xml
<!-- 获取周排名 -->
<select id="getWeeklyRanking" resultMap="prizeMap">
SELECT * FROM prize
WHERE YEARWEEK(date_format(date, '%Y-%m-%d'), 1) = YEARWEEK(now(), 1)
ORDER BY amount DESC
LIMIT 5;
</select>
<!-- 获取月排名 -->
<select id="getMonthlyRanking" resultMap="prizeMap">
SELECT * FROM prize
WHERE YEAR(date) = YEAR(now()) AND MONTH(date) = MONTH(now())
ORDER BY amount DESC
LIMIT 5;
</select>
<!-- 获取年排名 -->
<select id="getYearlyRanking" resultMap="prizeMap">
SELECT * FROM prize
WHERE YEAR(date) = YEAR(now())
ORDER BY amount DESC
LIMIT 5;
</select>
<!-- Prize 实体类映射关系 -->
<resultMap id="prizeMap" type="com.example.demo.entity.Prize">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="amount" column="amount"/>
<result property="date" column="date"/>
</resultMap>
```
接下来,创建一个 PrizeDaoImpl 类,实现 PrizeDao 接口:
```java
@Repository
public class PrizeDaoImpl implements PrizeDao {
private final SqlSession sqlSession;
@Autowired
public PrizeDaoImpl(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
@Override
public List<Prize> getWeeklyRanking() {
return sqlSession.selectList("com.example.demo.dao.PrizeDao.getWeeklyRanking");
}
@Override
public List<Prize> getMonthlyRanking() {
return sqlSession.selectList("com.example.demo.dao.PrizeDao.getMonthlyRanking");
}
@Override
public List<Prize> getYearlyRanking() {
return sqlSession.selectList("com.example.demo.dao.PrizeDao.getYearlyRanking");
}
}
```
最后,创建一个 PrizeController 类,定义相应的接口,实现获取中奖奖品的周排名、月排名、年排名、降序排列取前 5 条数据的功能:
```java
@RestController
@RequestMapping("/prize")
public class PrizeController {
private final PrizeService prizeService;
@Autowired
public PrizeController(PrizeService prizeService) {
this.prizeService = prizeService;
}
@GetMapping("/weeklyRanking")
public List<Prize> getWeeklyRanking() {
return prizeService.getWeeklyRanking();
}
@GetMapping("/monthlyRanking")
public List<Prize> getMonthlyRanking() {
return prizeService.getMonthlyRanking();
}
@GetMapping("/yearlyRanking")
public List<Prize> getYearlyRanking() {
return prizeService.getYearlyRanking();
}
}
```
最后,创建一个 PrizeService 类,调用 PrizeDao 的方法实现获取中奖奖品的周排名、月排名、年排名、降序排列取前 5 条数据的功能:
```java
@Service
public class PrizeService {
private final PrizeDao prizeDao;
@Autowired
public PrizeService(PrizeDao prizeDao) {
this.prizeDao = prizeDao;
}
public List<Prize> getWeeklyRanking() {
return prizeDao.getWeeklyRanking();
}
public List<Prize> getMonthlyRanking() {
return prizeDao.getMonthlyRanking();
}
public List<Prize> getYearlyRanking() {
return prizeDao.getYearlyRanking();
}
}
```
以上就是使用 Java 编程和 Spring Boot 和 MyBatis 框架连接 MySQL 数据库,获取中奖奖品的周排名、月排名、年排名、降序排列取前 5 条数据的程序示例。
阅读全文