spring boot + vue 项目初始化配置
Vue 工程
- 创建 Vue 工程
- 安装 Element UI、axios 插件
- 安装 Echarts
1、执行命令
cnpm install echarts@4.9.0 --save
2、main.js 中引入
import echarts from 'echarts'
Vue.prototype.$echarts = echarts
3、代码
<template>
<div id="myChart" :style="{width: '800px', height: '600px'}"></div> </template> <script> export default { name: 'Echarts', mounted(){ // 基于准备好的dom,初始化echarts实例 let myChart = this.$echarts.init(document.getElementById('myChart')) // 绘制图表 myChart.setOption({ title: { text: '水果销量统计', left: 'center', top: 20, textStyle: { color: '#555555' } }, tooltip: {}, xAxis: { data: [ "苹果", "香蕉", "橘子", "火龙果", "葡萄", "西瓜" ] }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: [ { value: 333, itemStyle: { color: "#3fb1e3" } }, { value: 133, itemStyle: { color: "#c4ebad" } }, { value: 99, itemStyle: { color: "#c4ebad" } }, { value: 222, itemStyle: { color: "#6be6c1" } }, { value: 399, itemStyle: { color: "#3fb1e3" } }, { value: 123, itemStyle: { color: "#c4ebad" } } ] }] }); } } </script>
- App.vue
<template>
<div id="app"> <div id="nav"> <router-link to="/add">添加数据</router-link> | <router-link to="/table">数据管理</router-link> | <router-link to="/pie">饼图</router-link> | <router-link to="/bar">柱状图</router-link> </div> <div style="border:0px solid red;width: 800px;height: 600px;margin-left: 366px;"> <router-view/> </div> </div> </template> <script> export default { name: 'app' } </script> <style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; } #nav { padding: 30px; } #nav a { font-weight: bold; color: #2c3e50; } #nav a.router-link-exact-active { color: #42b983; } </style>
- Element UI 表格嵌入图片
<template slot-scope="scope">
<img :src="scope.row.icon" style="height: 70px"/> </template>
- 数据校验
<template>
<el-form ref="fruitRules" :model="fruit" :rules="rules" label-width="80px" class="demo-ruleForm" style="width: 600px"> <el-form-item label="名称" prop="name"> <el-input v-model="fruit.name"></el-input> </el-form-item> <el-form-item label="销量" prop="sale"> <el-input v-model.number="fruit.sale"></el-input> </el-form-item> <el-form-item label="图片" prop="icon"> <el-input v-model="fruit.icon"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="onSubmit('fruitRules')">立即创建</el-button> <el-button>取消</el-button> </el-form-item> </el-form> </template> <script> export default { name: "Add", data() { return { fruit: { name: '', sale: '', icon: '' }, rules:{ name:[ { required: true, message: '请输入水果名称', trigger: 'blur' } ], sale:[ { required: true, message: '请输入销量', trigger: 'blur' }, { type: 'number', message: '销量必须为数字值'} ], icon:[ { required: true, message: '请输入图片链接', trigger: 'blur' } ] } } }, methods: { onSubmit(formName){ this.$refs[formName].validate((valid) => { if (valid) { let _this = this axios.post('http://localhost:8181/fruit/add',this.fruit).then(function (response) { if(response.data){ _this.$alert(_this.fruit.name+'添加成功!', '添加数据', { confirmButtonText: '确定', callback: action => { //跳转到/table _this.$router.push('/table') } }); } }) } }); } } } </script> <style scoped> </style>
Spring Boot 工程
- pom.xml 导入 MBP 依赖
<dependency>
<groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.2</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency>
- 代码生成器
package com.southwind;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.GlobalConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig; import com.baomidou.mybatisplus.generator.config.StrategyConfig; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; public class GenerateTest { public static void main(String[] args) { //创建generator对象 AutoGenerator autoGenerator = new AutoGenerator(); //数据源 DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL); dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver"); dataSourceConfig.setUsername("root"); dataSourceConfig.setPassword("123456"); dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/test11"); autoGenerator.setDataSource(dataSourceConfig); //全局配置 GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java"); globalConfig.setAuthor("admin"); globalConfig.setOpen(false); globalConfig.setServiceName("%sService"); autoGenerator.setGlobalConfig(globalConfig); //包信息 PackageConfig packageConfig = new PackageConfig(); packageConfig.setParent("com.southwind"); packageConfig.setEntity("entity"); packageConfig.setMapper("mapper"); packageConfig.setService("service"); packageConfig.setServiceImpl("service.impl"); packageConfig.setController("controller"); autoGenerator.setPackageInfo(packageConfig); //策略配置 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setInclude("fruit"); strategyConfig.setNaming(NamingStrategy.underline_to_camel); strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); strategyConfig.setEntityLombokModel(true); autoGenerator.setStrategy(strategyConfig); //运行 autoGenerator.execute(); } }
- application.yml
spring:
datasource: url: jdbc:mysql://localhost:3306/test11 username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath:com/southwind/mapper/xml/*.xml server: port: 8181
- 跨域
package com.southwind.configuration;
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class CrosConfiguration implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOriginPatterns("*") .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS") .allowCredentials(true) .maxAge(3600) .allowedHeaders("*"); } }
__EOF__

本文作者:小李不背锅
本文链接:https://www.cnblogs.com/lishilin-glut/p/15719042.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/lishilin-glut/p/15719042.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:小李不背锅,转载请注明原文链接:https://www.cnblogs.com/lishilin-glut/p/15719042.html
分类:
sprint-boot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通