在以上基础上,使用springboot,mybatisplus,且使用@SELECT注解SQL,outlet和package已经有了,用更简洁的方式实现上述内容
时间: 2024-03-11 14:49:38 浏览: 133
简易的springboot+mybatisplus+mysql
使用Spring Boot和MyBatis Plus,并且使用`@Select`注解,你可以采用以下方式实现上述内容:
首先,在`Package`的实体类中添加一个计算`is_damaged`为1的数量的属性:
```java
public class Package {
// 省略其他属性
@TableField(exist = false)
private Integer damagedCount; // 计算is_damaged为1的数量
}
```
接着,在`PackageMapper`中添加一个`@Select`注解的查询方法:
```java
@Select("SELECT outlet.outletno, outlet.oname, COUNT(package.is_damaged) AS damaged_count FROM outlet INNER JOIN package ON package.outletno = outlet.outletno WHERE package.is_damaged = 1 GROUP BY outlet.outletno, outlet.oname")
List<Map<String, Object>> selectDamagedCount();
```
这里使用了`@Select`注解指定了原生SQL语句,并且返回值为`List<Map<String, Object>>`,表示每一行数据使用一个`Map`来表示。
最后,在业务逻辑中调用该方法,并输出查询结果:
```java
List<Map<String, Object>> resultList = packageMapper.selectDamagedCount();
for (Map<String, Object> row : resultList) {
System.out.print("<==\tColumns: id, wename, weaddress, contactphone, businesshours, outletno, sname, damaged_count <==\tRow: ");
for (Map.Entry<String, Object> entry : row.entrySet()) {
System.out.print(entry.getValue() + ", ");
}
System.out.println();
}
```
这里直接使用`Map`来表示每一行数据,遍历`resultList`时直接输出`Map`中的值即可。需要注意的是,这里输出每一行数据前面也有`<==\tColumns: id, wename, weaddress, contactphone, businesshours, outletno, sname, damaged_count <==\tRow: `,这是为了和示例数据的输出形式保持一致。你可以根据自己的需要进行调整。
阅读全文