SpringBoot + MyBaits+ Vue + ElementUi简单的数据流传递(从0开始搭建)

文末有git 地址

创建目录

dataStream

前端创建

环境版本

进入目录 dataStream,打开终端输入命令
vue create client(client 为项目名称)
上述命令无法使用时需要全局安装,用如下命令进行安装
sudo npm install -g @vue/cli

回车确认,空格取消选项

等待项目创建完成

用vscode 打开项目文件夹

打开终端, 输入命令 npm run serve 运行项目

访问http://localhost:8080/ ,出现下图,则表示你的项目创建成功

初始Vue 文件的删除

删除文件

删除App.vue 中的文件至跟下图所示一样即可 

<template>
  <div id="app">


  </div>
</template>

<script>


export default {
  name: 'App',
  components: {

  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

安装ElementUI,安装axios

ElementUI官方文档https://element.eleme.cn/#/zh-CN
终端分别输入命令

npm i element-ui -S
npm install axios

全局导入ElmentUI, 如下代码

main.js

import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.config.productionTip = false
Vue.use(ElementUI);


new Vue({
  el: '#app',
  render: h => h(App),
}).$mount('#app')

创建一个自定义组件compoennts.TableComponent.Vue(这个组件名称需要为两个单词的组合否则会报错)

到ElementUI 官方寻找一个表格进行复制它的代码至我们创建的自定义组件中(这里我选择的是第一个)

https://element.eleme.cn/#/zh-CN/component/table

TableComponent.Vue
<template>
    <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column
        prop="date"
        label="日期"
        width="180">
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="address"
        label="地址">
      </el-table-column>
    </el-table>
  </template>

  <script>
    export default {
      data() {
        return {
          tableData: [{
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1518 弄'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
          }, {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
          }, {
            date: '2016-05-03',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1516 弄'
          }]
        }
      }
    }
  </script>

将我们自定义的组件引入和挂载到根组件下App.vue 中,并进行调用

<template>
  <div id="app">
    <!-- 调用 -->
    <TableComponent></TableComponent>
  </div>
</template>

<script>
// 引入
import TableComponent from './components/TableComponent.vue'
export default {
  name: 'App',
  components: {
    // 挂载
    TableComponent
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

npm run serve 运行看看,页面出现表格,即你的ElementUi 的引用,自定义组件的创建,代码都是正确的,给你一个respect。

后端创建

Idea 创建SpringBoot 项目,如图

点击next ,搜索web勾选Spring Web,如图,create

创建数据库

 create database dataStream;

创建一张表user

CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(255),
    password VARCHAR(255)
);

添加依赖pom.xml

<!--MybaitsPlus-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.5</version>
            <exclusions>
                <exclusion>
                    <groupId>com.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.20</version>
        </dependency>
        <!--Mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

配置application.properties 文件

spring.application.name=server
# ?????????
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# dataStream 为数据库名字
spring.datasource.url=jdbc:mysql://localhost:3306/dataStream?useSSl=flase
# 数据库名称和密码
spring.datasource.username=
spring.datasource.password=
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl


# 热加载
spring.devtools.restart.enabled=true
# ??????
spring.devtools.restart.additional-paths=src/main/java
# ??classpath ????WEB?INF ?????????
spring.devtools.restart.exclude=static/**

创建文件com.lz.server.entity.User

package com.lz.server.entity;

public class User {
//    这里的属性和数据库一样
    private int id;
    private String username;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    private String password;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

创建文件com.lz.server.mapper

package com.lz.server.mapper;

import com.lz.server.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper {
    //
    @Select("select * from user")
    public List<User> find();
}

在文件ServerApplication.java 中添加

@MapperScan("com.lz.server.mapper")

创建文件com.lz.server.controller.UserController

package com.lz.server.controller;

import com.lz.server.entity.User;
import com.lz.server.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user")
    public List<User>  query(){
        List<User> list = userMapper.find();
        System.out.println(list);
        return list;
    }
}

添加5条数据到表中

INSERT INTO user (username, password) VALUES
    ('user1', 'pass1'),
    ('user2', 'pass2'),
    ('user3', 'pass3'),
    ('user4', 'pass4'),
    ('user5', 'pass5');

运行SpringBoot 项目 

访问端口号localhost:8080/user,出现如下图所示即为成功

配置后端的端口,因为Vue 的默认端口和SpringBoot 的默认端口冲突

application.properties

server.port=8085

运行程序并查看

后端配置跨域

创建文件com.lz.server.config

package com.lz.server.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;


@Configuration
public class CorsConfig {

    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addExposedHeader("x-auth-token");
        corsConfiguration.addExposedHeader("access-control-allow-headers");
        corsConfiguration.addExposedHeader("access-control-allow-methods");
        corsConfiguration.addExposedHeader("access-control-allow-origin");
        corsConfiguration.addExposedHeader("access-control-max-age");
        corsConfiguration.addExposedHeader("X-Frame-Options");
        corsConfiguration.setAllowCredentials(false);
        corsConfiguration.setMaxAge(3600L);
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}

前端全局配置axios main. js 中添加

import axios from 'axios'

axios.defaults.baseURL = "http://localhost:8085"
Vue.prototype.$http = axios

获取后端数据并将之前写的死数据改为活数据TableComponent.vue

<template>
    <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column
        prop="id"
        label="id"
        width="180">
      </el-table-column>
      <el-table-column
        prop="username"
        label="username"
        width="180">
      </el-table-column>
      <el-table-column
        prop="username"
        label="password">
      </el-table-column>
    </el-table>
  </template>

  <script>
    export default {
      methods: {},
      created:function(){
      this.$http.get("http://localhost:8085/user").then((response)=>{
      console.log(response.data);
      this.tableData = response.data
    })
  },
      data() {
        return {
          tableData: []
        }
      },
      
    }
  </script>

前后端同时运行

前端项目地址:GitHub - lz020214/dataStreamClient

后端项目地址:GitHub - lz020214/dataStreamServer

Github地址:https://github.com/lz020214

感谢各位的点赞收藏

  • 53
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值