1、实验环境:
1)IDEA、SpringBoot、Echarts
2)MyBatis plus、mybatis-plus-generator、velocity
3)thymeleaf、spring-web
4)mybatis、mysql、lombok
2、项目目录:
1)controller->ProductsController.java
2)entity->Products.java
3)mapper->ProductsMapper.java
->xml->ProductsMapper.xml
4)service->ProductsService.java
->impl->ProductsServiceImpl.java
5)vo->BarVO/PieVO/ProductsBarVO
BarVO.java
@Data public class BarVO { //柱状图 private List<String> names; private List<Integer> values; }
PieVO
@Data @AllArgsConstructor //带参构造 public class PieVO { //饼图格式:{value: 335, name: '直接访问'} private Integer value; private String name; }
ProductsBarVO
@Data public class ProductsBarVO { //柱状图 //变量名一定要和数据库中的查询名字一致 private String name; private Integer count; }
6)test->mapper->ProductsMapperTest.java
7)test->service->ProductsServiceTest.java
3、测试流程:
1)ProductsBarVO->ProductsMapper->ProductsMapperTest
2)ProductsService->ProductsServiceImpl->ProductsServiceTest
3)ProductsController->Echarts
4、测试代码:
1)ProductsBarVO.java
package com.task.vo; @Data public class ProductsBarVO { //柱状图 //变量名一定要和数据库中的查询名字一致 private String name; private Integer count; }
2)ProductsMapper.java
package com.task.mapper; @Repository public interface ProductsMapper extends BaseMapper<Products> { //柱状图 //商品表-分组(商品种类、商品种类数量) //自定义语句 @Select("SELECT name , sum(pnum) count FROM estore.products GROUP BY name") public List<ProductsBarVO> findAllProductBarVO(); @Select("SELECT color name, sum(pnum) count FROM estore.products GROUP BY color") public List<ProductsBarVO> findColorNumBarVO(); }
3)ProductsMapperTest.java
package com.task.mapper;import static org.junit.jupiter.api.Assertions.*; @SpringBootTest class ProductsMapperTest { @Autowired private ProductsMapper mapper; //测试横向的findAllProductBarVO @Test void test(){ //name、 count都在集合list中 List<ProductsBarVO> list = mapper.findAllProductBarVO(); int i = 0; } @Test void test2(){ //color、 count都在集合list中 List<ProductsBarVO> list = mapper.findColorNumBarVO(); int i = 0; } }
4)ProductsService.java
package com.task.service;public interface ProductsService extends IService<Products> { //柱状图 //商品表-分组(商品种类、商品种类数量) //把productsBarVO中的数据传到BarVO public BarVO getBarVO(); //PieVO返回一个集合 public List<PieVO> getPieVO(); //把productsBarVO中的数据传到BarVO public BarVO getBarVO(List<ProductsBarVO> list); }
5)ProductsServiceImpl.java
package com.task.service.impl; @Service public class ProductsServiceImpl extends ServiceImpl<ProductsMapper, Products> implements ProductsService { @Autowired private ProductsMapper productsMapper; //柱状图 //商品表-分组(商品种类、商品种类数量) //业务层封装,即把productBarVO中的集合拆分封装成BarVO两个子对象 @Override public BarVO getBarVO() { //测试过没问题的 List<ProductsBarVO> list = productsMapper.findAllProductBarVO(); //定义两个集合 List<String> names = new ArrayList<>(); List<Integer> values = new ArrayList<>(); //for循环遍历给数组 for(ProductsBarVO productsBarVO : list){ names.add(productsBarVO.getName()); values.add(productsBarVO.getCount()); } //定义个BarVo BarVO barVO = new BarVO(); barVO.setNames(names); barVO.setValues(values); return barVO; //接着来个测试 } //PieVO返回一个集合,实现ProductsService中的getPieVO方法 @Override public List<PieVO> getPieVO() { //测试过没问题的 List<ProductsBarVO> list = productsMapper.findAllProductBarVO(); List<PieVO> pieVOList = list.stream() .map(e -> new PieVO( e.getCount(), e.getName() )).collect(Collectors.toList()); return pieVOList; } @Override public BarVO getBarVO(List<ProductsBarVO> list) { //测试过没问题的 // List<ProductsBarVO> list = productsMapper.findAllProductBarVO(); //定义两个集合 List<String> names = new ArrayList<>(); List<Integer> values = new ArrayList<>(); //for循环遍历给数组 for(ProductsBarVO productsBarVO : list){ names.add(productsBarVO.getName()); values.add(productsBarVO.getCount()); } //定义个BarVo BarVO barVO = new BarVO(); barVO.setNames(names); barVO.setValues(values); return barVO; //接着来个测试 } }
6)ProductsServiceTest.java
package com.task.service;import static org.junit.jupiter.api.Assertions.*; @SpringBootTest class ProductsServiceTest { @Autowired private ProductsService service; @Autowired private ProductsMapper mapper; //测试getBarVO() @Test void getBarVO() { BarVO barVO = service.getBarVO(); int i = 0; } @Test void getBarVO2() { List<ProductsBarVO> list = mapper.findColorNumBarVO(); BarVO barVO = service.getBarVO(list); int i = 0; } }
7)productsController.java
package com.task.controller; @Controller public class ProductsController { @Autowired private ProductsService productsService; @Autowired private ProductsMapper mapper; @RequestMapping("/barVO") @ResponseBody //返回的是数据所以加上ResponseBody public BarVO getBarVO(){ //把数据传到前台 return productsService.getBarVO(); } @RequestMapping("/pieVO") @ResponseBody //返回的是数据所以加上ResponseBody public List<PieVO> getPieVO(){ //把数据传到前台 return productsService.getPieVO(); } @RequestMapping("/barVO2") @ResponseBody //返回的是数据所以加上ResponseBody public BarVO getBarVO2(){ //把数据传到前台 List<ProductsBarVO> list = mapper.findColorNumBarVO(); return productsService.getBarVO(list); } }
8)可视化展示