SpringBoot整合Echarts实现用户人数和性别展示功能(详细步骤)

作者:FeereBug 时间:2023-02-22 00:31:59 

一、背景

在Web应用开发中,经常需要使用图表来展示数据,而Echarts是一个非常优秀的图表库。SpringBoot是一个非常流行的Java Web框架,它可以快速搭建Web应用。本文将介绍如何使用SpringBoot集成Echarts,实现展示用户人数和性别的功能。

SpringBoot整合Echarts实现用户人数和性别展示功能(详细步骤)

二、功能实现流程

1. 创建数据库表

首先,我们需要创建数据库表,用于存储用户信息。本文中,我们创建一个名为“user”的表,用于存储用户的id、姓名、性别等信息。

2. 创建SpringBoot项目

使用IDEA等工具,创建一个SpringBoot项目,并加入相应的依赖。本文中,我们加入的主要依赖有SpringBoot、MyBatis、MySQL等。

3. 实现数据访问层

使用MyBatis框架,实现对用户信息的增删改查等操作。同时,我们也需要实现一个接口用于查询用户的性别比例。

4. 实现业务逻辑层

在业务逻辑层中,我们需要完成对应的功能代码。主要包括:添加用户、删除用户、修改用户信息、查询所有用户、查询用户性别比例等操作。其中,查询用户性别比例的操作需要使用Echarts来生成相应的图表。

5. 实现控制层

在控制层中,我们需要编写对应的接口,用于接收前端的请求,并调用相应的业务逻辑层方法来完成相应的操作。同时,我们也需要编写相应的HTML页面,用于展示用户人数和性别比例的图表。

6. 实现前端页面

使用Vue框架,实现前端页面,并通过接口调用,将后台数据展示到前端页面上。

三、代码实现

本文提供一个示例代码,代码实现过程中,使用了SpringBoot、MyBatis、MySQL等主流技术,实现了基本的增删改查操作、以及查询用户性别比例并用Echarts展示的功能。示例代码中的表名为“user”,根据实际情况可做相应修改。

数据库设计

CREATE TABLE `user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) NOT NULL,
 `gender` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

数据访问层代码

@Mapper
@Component
public interface UserDao {
   int insert(User user);
   int delete(int userId);
   int update(User user);
   List<User> selectAll();
   int countByGender(int gender);
}

业务逻辑层代码

@Mapper
@Component
public interface UserDao {
   int insert(User user);
   int delete(int userId);
   int update(User user);
   List<User> selectAll();
   int countByGender(int gender);
}

控制层代码

@RestController
@RequestMapping("/users")
public class UserController {
   @Autowired
   private UserService userService;
   @PostMapping("/add")
   public String addUser(@RequestBody User user) {
       userService.addUser(user);
       return "success";
   }
   @PostMapping("/delete")
   public String deleteUser(@RequestParam("userId") int userId) {
       userService.deleteUser(userId);
       return "success";
   }
   @PostMapping("/update")
   public String updateUser(@RequestBody User user) {
       userService.updateUser(user);
       return "success";
   }
   @GetMapping("/all")
   public List<User> getAllUsers() {
       return userService.getAllUsers();
   }
   @GetMapping("/ratio")
   public Map<String, Integer> getUserGenderRatio() {
       return userService.getUserGenderRatio();
   }
}

前端页面代码

<!DOCTYPE html>
<html>
<head>
 <title>用户信息展示</title>
 <meta charset="utf-8">
 <!-- 引入Echarts -->
 <script src="https://cdn.jsdelivr.net/npm/echarts@4.9.0/dist/echarts.min.js"></script>
 <!-- 引入Vue -->
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <!-- 引入axios -->
 <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
 <div id="app">
   <!-- 显示用户总数 -->
   <p>共有{{ userList.length }}个用户</p>
   <!-- 显示用户性别比例 -->
   <div id="genderRatio" style="width: 600px;height:400px;"></div>
 </div>
 <script>
   new Vue({
     el: '#app',
     data: {
       userList: []
     },
     mounted() {
       this.getUserList();
       this.showGenderRatio();
     },
     methods: {
       getUserList() {
         axios.get('/users/all')
           .then(response => {
             this.userList = response.data;
           })
           .catch(error => {
             console.log(error);
           })
       },
       showGenderRatio() {
         axios.get('/users/ratio')
           .then(response => {
             let maleCount = response.data.male;
             let femaleCount = response.data.female;
             // 使用Echarts生成图表
             let chart = echarts.init(document.getElementById('genderRatio'));
             chart.setOption({
               title: {
                 text: '用户性别比例',
                 subtext: '男性/女性'
               },
               tooltip: {
                 trigger: 'item',
                 formatter: '{a} <br/>{b}: {c} ({d}%)'
               },
               legend: {
                 orient: 'vertical',
                 left: 'left',
                 data: ['男性', '女性']
               },
               series: [
                 {
                   name: '性别',
                   type: 'pie',
                   radius: ['50%', '70%'],
                   avoidLabelOverlap: false,
                   label: {
                     show: false,
                     position: 'center'
                   },
                   emphasis: {
                     label: {
                       show: true,
                       fontSize: '30',
                       fontWeight: 'bold'
                     }
                   },
                   labelLine: {
                     show: false
                   },
                   data: [
                     {value: maleCount, name: '男性'},
                     {value: femaleCount, name: '女性'}
                   ]
                 }
               ]
             });
           })
           .catch(error => {
             console.log(error);
           })
       }
     }
   });
 </script>
</body>
</html>

四、总结

本文介绍了如何使用SpringBoot集成Echarts,实现展示用户人数和性别的功能。通过数据库设计、实现数据访问层、业务逻辑层和控制层的代码编写,以及前端页面的开发,本文详细地介绍了SpringBoot整合Echarts的实现步骤和代码。

其中,使用Vue框架进行前端页面开发,增加了Web应用的可扩展性和易用性。同时,通过使用Echarts图表库,我们可以让数据呈现更为直观清晰,增强用户体验。

希望本文对读者在Web应用开发中的图表展示有所帮助。

来源:https://blog.csdn.net/weixin_65950231/article/details/130539760

标签:SpringBoot,Echarts,用户人数,性别展示
0
投稿

猜你喜欢

  • JAVA抛出异常的三种形式详解

    2022-06-26 22:44:32
  • Android毕业设计备忘录APP

    2023-12-25 02:28:17
  • C#读取静态类常量属性和值的实例讲解

    2022-04-15 16:37:34
  • C#数据绑定(DataBinding)简单实现方法

    2021-10-09 21:13:22
  • Android中使用定时器的三种方法

    2022-06-04 00:16:20
  • C#使用GDI绘制直线的方法

    2022-08-16 09:45:17
  • java安全编码指南之:表达式规则说明

    2021-06-01 17:48:44
  • Java使用MulticastSocket实现群聊应用程序

    2021-09-23 12:12:29
  • C# 特性AttributeUsage简介与使用教程

    2022-09-30 01:53:21
  • Android集成微信登录的步骤详解

    2023-01-12 15:12:45
  • C# winform登陆框验证码的实现方法

    2022-08-26 12:45:58
  • C#利用TreeView控件实现目录跳转

    2021-07-26 02:57:50
  • C#基于QRCode实现动态生成自定义二维码图片功能示例

    2023-04-03 04:08:43
  • Spring JDBC的使用方法详解

    2021-12-08 14:05:42
  • Dagger2 Android依赖注入学习笔记

    2021-11-27 17:15:54
  • C#发送Get、Post请求(带参数)

    2023-04-11 07:28:14
  • java基于JDBC连接Oracle 11g Release2实例分析

    2022-06-06 02:36:36
  • Java Zookeeper分布式分片算法超详细讲解流程

    2023-07-08 06:56:36
  • java 查找替换pdf中的指定文本

    2022-08-17 14:04:46
  • Java Spring拦截器案例详解

    2022-11-01 07:15:06
  • asp之家 软件编程 m.aspxhome.com