基于SpringBoot+ Vue 音乐平台
SpringBoot+ Vue 音乐平台
一、前言
二、开发环境
三、后端项目构建
1、创建数据库表
2、创建项目
3、配置文件
1)application.properties
2)generatorConfig.xml
3)pom.xml
4、测试(以新建一个用户为例)
5、开发接口(以返回所有用户信息为例)
1)实体类(domain 目录下)
2)Mapper 层 / DAO 层(dao、mapper 目录下)
3)Service 层(service 目录下)
4)Controller 层(controller 目录下)
5)实战(写一个返回所有用户信息的接口)
6)总结
6、最终项目结构
四、客户端项目构建
1、创建项目
2、开发思路
3、最终项目结构
五、管理端项目构建
1、最终项目结构
六、最后
一、前言
本文旨在对项目的开发设计提供一个思路。了解了具体实现的来龙去脉,上手自己做或者做其他项目就容易得多了。总的来说要知道数据是怎么从数据库一步步跑到前端页面的,当知道了整个的流程再去处理中间的细节,接下来我们就开始吧。
二、开发环境
操作系统:win10,win11,Mac
JDK: jdk-8u141
JDK下载官网
mysql:mysql-8.0.13-1-macos10.13-x86_64
mysql环境配置(Win10)
node:node:v14.17.3
IDE:IntelliJ IDEA 2022 / VSCode / HBuilder X
三、后端项目构建
1、创建数据库表
2、创建项目
打开 idea,新建一个项目,在 new 一个新项目的时候,选择 Spring Initializr,在选择项目依赖的时候勾选 web下的 Spring Web Starter 和 SQL下的 MySQL Driver 和 MyBatis Framework ,然后一直继续后会得到如下结构(总体分三层)。
3、配置文件
1)application.properties
配置 application.properties 文件,用于连接数据库(代码见项目源码)。
2)generatorConfig.xml
利用 MyBatis Generator 自动生成代码(实体类,Mapper接口和Mapper.xml文件),需要指定 mysql-connector-java ( src/main/resources 目录下)和生成文件的路径。在 src/main/resources 目录下创建 generatorConfig.xml 文件并配置(代码见项目源码)。
3)pom.xml
pom.xml 文件负责配置项目相关的依赖和插件,包括上面的 MyBatis Generator(项目plugins 标签中注视掉的代码是对 Mybatis-generator 插件的配置),在创建项目时,idea 已经帮我们引入了一些依赖,下面我们需要在 dependencies 标签中引入项目需要的一些依赖,配置的代码可以直接看代码,这里就不往出写了,下面对主要依赖进行下描述:
package | 说明 |
---|---|
mybatis-spring-boot-starter | MyBatis核心for Spring Boot |
mysql-connector-java | java 与 mysql 连接的 jar 包驱动程序 |
fastjson | 实现 json 对象与 JavaBean 对象的转换 |
在 plugins 标签中对 Mybatis-generator 进行配置,用于自动生成代码。
至此,项目的配置就弄完了,在命令行执行 ./mvnw mybatis-generator:generate 自动生成代码,得到的项目结构如下所示。此时会看到多生成了 dao、domain、mapper 目录及下面的文件。生成项目后,需要将上面 pom.xml 文件中 Mybatis-generator 插件的配置注视调,因为这个文件就是初始时候自动生成代码用的,如果不注视每次运行都会再生成一次,即覆盖之前的代码。
4、测试(以新建一个用户为例)
创建好项目之后先测试一下,首先在 src/main/java/com/example/demo 目录下创建 service 包,service 包下创建 ConsumerService 接口和 impl包,impl包下创建 ConsumerServiceImpl 类,具体创建这个干嘛下面写接口时候再介绍。
(1)ConsumerService 接口的代码如下
ConsumerServiceImpl 类的代码如下
(2)在 src/main/java/com/example/demo 下的 ConsumerMapper 接口中添加如下代码。
在 src/main/resources/mapper 下的 ConsumerMapper.xml 文件中将 insertSelective 改成 addUser
(3)打开 SpringBoot 的启动类,加上 @MapperScan 注解,指向 dao 层接口所在的包路径。@MapperScan(“com.example.demo.dao”)
(4)然后在 src/test/java/com/example/demo 下的测试文件中写测试代码,如下,然后点如下所示运行,没有提示错误,且数据库中成功存入数据,说明项目构建成功,接下来就可以开始写接口了。
5、开发接口(以返回所有用户信息为例)
在写接口之前,先对项目层次做一下介绍。项目层次我将主要根据 domain、 DAO、Service、Controller 这几层主要实现的功能和它们之间的联系进行介绍。
1)实体类(domain 目录下)
定义数据库表所对应的实体类。
2)Mapper 层 / DAO 层(dao、mapper 目录下)
数据操作层:向数据库发送 SQL 语句,完成数据库操作。
分为 Mapper 接口 和 Mapper 接口映射文件。 Mapper 接口在 dao 目录下,定义操作数据库的函数(函数不能直接去进行 CURD), Mapper 接口映射文件在 mapper 目录下,完成对数据库的访问。
3)Service 层(service 目录下)
服务层:完成业务逻辑处理。调用 Mapper 层操作数据库。
分为 Service 接口 + Service 实现,用面向接口的编程思想,方便后续功能的解藕及扩展。
4)Controller 层(controller 目录下)
控制层:对请求和响应进行控制,调用 Service 层进行业务逻辑处理,最后将处理好的数据返回给前端。
5)实战(写一个返回所有用户信息的接口)
假如前端访问 http://localhost:8088/allUser
就要拿到所有用户的信息,那么按照上面的层次我们可以这么写。
(1)访问的接口由 Controller 层来处理,所以这里这样定义,要返回所有用户信息,把它当一个命令,交给 Service 层去做。
(2)到了 Service 层,Service 层的 ConsumerService 接口中先定义下面方法
然后在 ConsumerServiceImpl 类中这样去实现它。
(3)Service 层会让 dao 层的 ConsumerMapper 接口调 allUser 方法去返回数据,
而 ConsumerMapper 接口操作数据库又要依赖 Mapper.xml 文件。
(4)这样,一个返回所有用户信息的接口就写完了,打开 Terminal 输入如下命令跑一下项目。如下所示
./mvnw spring-boot:run
6)总结
当前端要访问数据的时候后端就提供相应接口,接口的编写是通过 Controller 层监听请求, 数据的处理交给 Service 层,而 Service 层再通过 Mapper 层操作数据库,操作完成后数据再一层层往上走,最后返回给前端。
6、最终项目结构
.
├── avatorImages // 用户头像
├── img
│ ├── singerPic // 歌手图片
│ ├── songListPic // 歌单图片
│ └── songPic // 歌曲图片
├── song // 存放歌曲
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com.example.yin
│ │ │ ├── config // 配置(跨域)
│ │ │ ├── controller // 控制层,接收请求返回响应
│ │ │ ├── dao // 数据操作层
│ │ │ ├── domain // 实体类
│ │ │ ├── constant
│ │ │ ├── service
│ │ │ │ └── impl // Service 层的接口
│ │ │ └── HwMusicApplicationTests.java // 项目入口
│ │ └── resources
│ │ ├── mapper // mapper.xml文件,操作数据库
│ │ ├── static // 存放静态资源
│ │ ├── templates
│ │ ├── application.properties // 连接数据库
│ │ └── generatorConfig.xml // MyBatis Generator 自动生成代码
│ └── test
│ └── java
│ └── com.example.demo // 测试用的
├── pom.xml // 添加相关依赖和插件
└── target
四、客户端项目构建
1、创建项目
这里项目的创建比后端要简单的多,直接用官方提供的脚手架,运行如下命令先全局安装 vue,然后进行安装
npm install -g @vue/cli进要创建项目的地方 vue create music-client
vue 在帮我们创建项目的时候依赖包也会装好,装好后进入项目,执行如下命令项目就跑起来了。
npm run serve
但是假如你是新手,不建议上来就用脚手架,先看一下 官网 了解一下组件、路由等等。
2、开发思路
因为代码都放在一起对后期维护和修改都不方便,所以要根据功能把他们拆分到不同目录。
在 pages 目录下放一些视图,里面的每一个组件主要是对整个试图的控制,具体里面的实现可以根据具体情况自己封装组件,或者直接使用第三方组件,components 目录下放置我们封装好的组件,利用 vue-router 把试图都组织起来,加载到 App.vue 文件中,最后渲染到页面中。
最开始构建页面可以写死,当基本样子搭起来之后就可以去向后端去请求数据,请求数据用到的是axios插件,获取到数据在控制台查看请求的数据,确保数据保存到正确的变量中去(这里如果遇到跨域的问题可以在后端用 CORS 解决)。
随着组件的增多,组件之间的传值就是问题,不可能一些数据一直好几个组件里一直传,我们需要 vuex 插件来对数据进行管理(这里通过 sessionStorage 解决 vuex 刷新数据丢失问题)。
不同的组件有时候会用到相同的方法,当要修改方法时就要改好多地方,所以把它们单独拿出来放到 mixins 文件夹下面,当用到这些方法的时候在对应组件中引入即可。
vue 支持很多的第三方组件,能给我们项目带来很好的交互和显示效果,具体在需要的时候引入就行了,当然了,一些样式和图片也可以放到 assets 文件夹下管理。
这个项目的话组件基本是自己实现的,第三方用的少,对练习组件的封装还是很有帮助的。
3、最终项目结构
项目结构详细:
├── build // webpack相关配置文件
├── config // vue基本配置文件
├── node_modules // 包
├── index.html // 入口页面
├── package.json // 管理包的依赖
├── src // 项目源码目录
│ ├── assets // icon,图片、css 等
│ ├── api // 封装请求的 api
│ ├── mixins // 公共方法
│ ├── enums // 枚举
│ ├── utils // 工具方法
│ ├── router // 路由
│ ├── store // 管理数据
│ ├── components
│ │ ├── Comment.vue // 评论
│ │ ├── PlayList.vue // 展示歌单歌手区
│ │ ├── SongList.vue // 展示歌单歌手包含的歌曲
│ │ └── layouts
│ │ ├── YinAudio.vue // 接收音乐并播放的位置
│ │ ├── YinCurrentPlay.vue // 播放列表
│ │ ├── YinFooter.vue // 页脚
│ │ ├── YinHeader.vue // 页头
│ │ ├── YinLoginLogo.vue // 登录界面的logo
│ │ ├── YinPlayBar.vue // 页面底部的播放控制区
│ │ └── YinScrollTop.vue // 回到顶部
│ ├── views // 组件
│ │ ├── error
│ │ │ └── 404.vue // 404
│ │ ├── Home.vue // 首页
│ │ ├── YinContainer.vue
│ │ ├── personal
│ │ │ ├── Personal.vue // 个人中心
│ │ │ ├── PersonalData.vue // 修改信息
│ │ │ └── Upload.vue // 修改头像
│ │ ├── setting
│ │ │ └── Setting.vue // 设置
│ │ ├── SignIn.vue // 登录区
│ │ ├── SignUp.vue // 注册区
│ │ ├── Lyric.vue // 歌词显示区
│ │ ├── search
│ │ │ ├── Search.vue // 搜索区
│ │ │ ├── SearchSong.vue // 按歌手搜索
│ │ │ └── SearchSongList.vue // 按歌单搜索
│ │ ├── singer
│ │ │ ├── Singer.vue // 歌手区
│ │ │ └── SingerDetail.vue // 歌手详情
│ │ └── song-sheet
│ │ ├── SongSheet.vue // 歌单区
│ │ └── SongSheetDetail.vue // 歌单详情
│ ├── main.js // 入口js文件
│ └── App.vue // 根组件
├── static // 存放静态资源
├── test // 测试文件目录
├── .babelrc // bable 编译配置
└── .gitignore // 提交忽略的文件配置
五、管理端项目构建
这里相比前台的开发要简单得多,因为是使用 Element UI 快速搭建的,实现和前台一样。
1、最终项目结构
项目结构:
├── build
├── config
├── node_modules
├── index.html
├── package.json
├── src
│ ├── App.vue
│ ├── main.js
│ ├── api
│ ├── assets
│ ├── mixins
│ ├── enums
│ ├── components
│ │ ├── dialog
│ │ │ └── YinDelDialog.vue
│ │ └── layouts
│ │ ├── YinAside.vue
│ │ ├── YinAudio.vue
│ │ └── YinHeader.vue
│ ├── views
│ │ ├── CollectPage.vue
│ │ ├── CommentPage.vue
│ │ ├── ConsumerPage.vue
│ │ ├── Home.vue
│ │ ├── InfoPage.vue
│ │ ├── ListSongPage.vue
│ │ ├── Login.vue
│ │ ├── SingerPage.vue
│ │ ├── SongListPage.vue
│ │ └── SongPage.vue
│ ├── router
│ ├── store
│ └── utils
├── static
└── test
六、最后(源码)
源码地址:
有各种源码系统和不同技术学习可以在:
咸鱼搜索(码上秃头)
taobao店铺名同上!
!!!!!!!!!
感谢对大家对项目存在在问题的反馈以及项目的优化!感兴趣的欢迎交流!
希望本文对大家有所启发,如有问题欢迎交流。
项目部分截图:
管理端:
用户端:
基于SpringBoot+ Vue 音乐平台相关推荐
- Java+MySQL基于springboot+vue音乐平台#毕业设计
项目编号:Java+MySQL spring260-基于springboot音乐平台#毕业设计 开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomca ...
- 基于 SpringBoot + VUE 【爱音乐管理系统】 平台设计与实现
免费领取源码+参考论文 基于SpringBoot + VUE [爱音乐管理系统] 博主介绍:
- java基于springboot+vue协同过滤算法的音乐推荐系统
音乐是人类永恒的话题,无论是在古代还是现代人们对音乐都有一种非常的热爱在里面,同时音乐也寄语了人们对美好事物的憧憬,很多时候人们在试听音乐的时候并不能够及时的找到适合自己的音乐,而且当下很多音乐都是收 ...
- 基于SpringBoot+Vue前后端分离的在线教育平台项目
基于SpringBoot+Vue前后端分离的在线教育平台项目 赠给有缘人,希望能帮助到你!也请不要吝惜你的大拇指,你的Star.点赞将是对我最大的鼓励与支持! 开源传送门: 后台:Gitee | Gi ...
- 基于SpringBoot vue的电脑商城平台源码和论文含支付宝沙箱支付
演示视频: 基于SpringBoot vue的电脑商城平台源码和论文含支付宝沙箱支付演示视频 支付宝沙箱: package com.java.controller;import java.util.* ...
- 共享车位|基于SpringBoot+vue+node共享车位平台的设计与实现
作者主页:编程千纸鹤 作者简介:Java.前端.Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 收藏点赞不迷路 关注作者有好 ...
- java计算机毕业设计基于springboot+vue+elementUI的口腔管理平台管理系统(前后端分离)
项目介绍 口腔卫生是关系民生的一个重要问题.口腔健康会直接影响全身的健康,口腔基本常见的有龋齿,牙周炎等问题,而且人类的牙齿只有2次更换周期,一旦牙齿彻底完成更换终生将不再更换,所以越来越多的人开始关 ...
- Springboot毕设项目基于springboot大学生兼职平台3tf70(java+VUE+Mybatis+Maven+Mysql)
Springboot毕设项目基于springboot大学生兼职平台3tf70(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + ...
- java语言基于springboot+vue+elementUI 基于web的智慧养老平台-#计算机毕业设计
项目介绍 随着社会的发展我国的人口老龄化严重,为了让这些在年前是给社会做出过贡献的老人老有所依,老有所养,度过一个安详的晚年,很多地方都实现了智慧养老,为此我们通过springboot+vue+ele ...
- 基于SpringBoot vue的茶叶商城平台源码和论文含支付宝沙箱支付
此项目是前后端分离的 后台项目:shop 前端项目:Vue-shop 后端项目启动步骤: 1.先把sql导入数据库 2.把后台项目导入编辑器 3.修改数据库配置 4.启动项目 前端项目启动步骤: ...
最新文章
- windows codeblocks clang 3.7.0
- 河北师范大学C语言试题,2017年河北师范大学信息技术学院838C语言程序设计考研题库...
- CSS 框模型——规定了元素框处理元素内容、内边距、边框和外边距的方式
- 动量策略 python_在Python中使用动量通道进行交易
- 音频的相MATLAB,音频处理后频率响应和相位响应问题
- 读取SD卡文件夹下的MP3文件和播放MP3文件
- display:inline-block的应用及bug
- 别点进来! Linux 与 Mac 下有趣但毫无用处的命令(转载)
- 基于 FastAPI 的房源租赁系统设计与实现
- html怎么设置顶部导航栏,CSS+HTML如何实现顶部导航栏
- 网页中在线玩街头霸王
- 有道翻译 翻译功能的功能实现
- 黄芪和当归的分量是5:1的比例,如黄芪30克,当归6克
- 8253的六种工作方式
- 飞速创新更新IPO招股书:计划募资约14亿元,向伟为实际控制人
- linux 磁盘分区的原理,linux磁盘—分区原理
- ITU-T E.800
- 前后端实现网站登录注册功能
- 解决selenium控制webdriver总是被网站检测的问题
- Linux嵌入式开发——shell命令
热门文章
- 3. 项目立项三板斧-建议书-可行性研究-评估论证
- 如何下载微信公众号视频
- Mac运行node.js连接oracle数据库报DPI-1047: Cannot locate a 64-bit Oracle Client library: “dlopen(libclntsh.dy
- 大学四年,因为这40个开发工具,我成为别人眼中的大神
- Android WallpaperManager 同时设置桌面壁纸与锁屏的问题
- 软件授权 x-auth
- 磁盘列阵(RAID)
- python最全面试题!
- 游戏测试好还是软件测试好,浅学软件测试 软件测试和游戏测试哪个有前途?...
- js 身份证号码验证包含15位和18位