当前位置:   article > 正文

SpringBoot+Vue

springboot+vue

SpringBoot

1、Spring Boot 简介

简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案;

SpringBoot优点:

  • 快速创建独立运行的Spring项目以及与主流框架集成

  • 使用嵌入式的Servlet容器,应用无需打成WAR包

  • starters自动依赖与版本控制

  • 大量的自动配置,简化开发,也可修改默认值

  • 无需配置XML,无代码生成,开箱即用

  • 准生产环境的运行时应用监控

  • 与云计算的天然集成

2、微服务

2014,martin fowler 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元。 架构风格(服务微化)

  - 一个应用应该是一组小型服务;
  - 可以通过HTTP的方式进行互通;

单体应用:ALL IN ONE 详细参照微服务文档

3、环境准备

1. 环境约束

  • –jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_112"

  • –maven3.x:maven 3.3以上版本;Apache Maven 3.3.9

  • –IntelliJIDEA2017:IntelliJ IDEA 2017.2.2 x64、STS

  • –SpringBoot 1.5.9.RELEASE:1.5.9;

2. MAVEN设置

给maven 的settings.xml配置文件的profiles标签添加:

  1. <profile>
  2.  <id>jdk-1.8</id>
  3.  <activation>
  4.    <activeByDefault>true</activeByDefault>
  5.    <jdk>1.8</jdk>
  6.  </activation>
  7.  <properties>
  8.    <maven.compiler.source>1.8</maven.compiler.source>
  9.    <maven.compiler.target>1.8</maven.compiler.target>
  10.    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  11.  </properties>
  12. </profile>

3. IDEA设置

IDEA整合maven:

4、Spring Boot HelloWorld

一个功能:浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串。

1、创建一个maven工程;(jar)

2、导入spring boot相关的依赖

  1. <parent>
  2.        <groupId>org.springframework.boot</groupId>
  3.        <artifactId>spring-boot-starter-parent</artifactId>
  4.        <version>1.5.9.RELEASE</version>
  5.    </parent>
  6.    <dependencies>
  7.        <dependency>
  8.            <groupId>org.springframework.boot</groupId>
  9.            <artifactId>spring-boot-starter-web</artifactId>
  10.        </dependency>
  11.    </dependencies>

3、编写一个主程序;启动Spring Boot应用

  1. /**
  2. * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
  3. */
  4. @SpringBootApplication
  5. public class HelloWorldMainApplication {
  6.    public static void main(String[] args) {
  7.        // Spring应用启动起来
  8.        SpringApplication.run(HelloWorldMainApplication.class,args);
  9.   }
  10. }

4、编写相关的Controller、Service

  1. @Controller
  2. public class HelloController {
  3.    @ResponseBody
  4.    @RequestMapping("/hello")
  5.    public String hello(){
  6.        return "Hello World!";
  7.   }
  8. }

5、运行主程序测试

6、简化部署

将这个应用打成jar包,直接使用java -jar的命令进行执行。

  1. <!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
  2.    <build>
  3.        <plugins>
  4.            <plugin>
  5.                <groupId>org.springframework.boot</groupId>
  6.                <artifactId>spring-boot-maven-plugin</artifactId>
  7.            </plugin>
  8.        </plugins>
  9.    </build>

7、SpringBoot连接数据库

  • 1) 引入依赖
  1.        <!-- 引入JDBC依赖-->
  2.        <dependency>
  3.            <groupId>org.springframework.boot</groupId>
  4.            <artifactId>spring-boot-starter-jdbc</artifactId>
  5.            <version>2.7.2</version>
  6.        </dependency>
  7.        <!--配置@Data需要的包-->
  8.        <dependency>
  9.            <groupId>org.projectlombok</groupId>
  10.            <artifactId>lombok</artifactId>
  11.        </dependency>
  12.        <!--配置MySQL依赖-->
  13.        <dependency>
  14.            <groupId>mysql</groupId>
  15.            <artifactId>mysql-connector-java</artifactId>
  16.            <version>8.0.29</version>
  17.        </dependency>
  18.        <!--配置JDBC依赖-->
  19.        <dependency>
  20.            <groupId>org.springframework.boot</groupId>
  21.            <artifactId>spring-boot-starter-jdbc</artifactId>
  22.        </dependency>
  23.        <!--配置mybatis-plus依赖-->
  24.        <dependency>
  25.            <groupId>com.baomidou</groupId>
  26.            <artifactId>mybatis-plus-boot-starter</artifactId>
  27.            <version>3.5.1</version>
  28.        </dependency>
  • 2) 添加数据库连接配置
  1. #设置应用端口号
  2. server.port = 8888
  3. # 数据库jdbc的连接
  4. spring.datasource.url=jdbc:mysql://localhost:3306/vue?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
  5. spring.datasource.username=root
  6. spring.datasource.password=root
  7. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  8. #使程序可以加载到资源里的mapper
  9. mybatis.mapper-locations=classpath:mapper/*.xml

5、测试连接数据库代码

  • 1) 项目目录结构

  • 2) 主程序入口
  1. package com.dgt.study;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. /**
  6. * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
  7. */
  8. @MapperScan("com.dgt.study.mapper")
  9. @SpringBootApplication
  10. public class TestApplication {
  11. public static void main(String[] args) {
  12. // Spring应用启动起来
  13. SpringApplication.run(TestApplication.class,args);
  14. }
  15. }

实体类User

  1. package com.dgt.study.entity;
  2. import com.baomidou.mybatisplus.annotation.IdType;
  3. import com.baomidou.mybatisplus.annotation.TableField;
  4. import com.baomidou.mybatisplus.annotation.TableId;
  5. import com.baomidou.mybatisplus.annotation.TableName;
  6. import com.fasterxml.jackson.annotation.JsonFormat;
  7. import lombok.AllArgsConstructor;
  8. import lombok.Data;
  9. import lombok.NoArgsConstructor;
  10. import java.io.Serializable;
  11. import java.util.Date;
  12. /**
  13. * Description:User实体类
  14. * User: HuaYan
  15. * Date: 2022-08-04 8:42
  16. */
  17. @Data
  18. @NoArgsConstructor
  19. @AllArgsConstructor
  20. @TableName("user")
  21. public class User implements Serializable {
  22. private static final long serialVersionUID = 1L;
  23. /** ID */
  24. @TableId(value = "id",type = IdType.ASSIGN_ID)
  25. private String id;
  26. /** 名称 */
  27. @TableField(value = "name")
  28. private String name;
  29. /** 地址 */
  30. @TableField(value = "address")
  31. private String address;
  32. /** 生日 */
  33. @JsonFormat(pattern="yyyy-MM-dd")
  34. @TableField(value = "date")
  35. private Date date;
  36. }

Controller类

  1. package com.dgt.study.controller;
  2. import com.dgt.study.entity.User;
  3. import com.dgt.study.service.IUserService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.*;
  6. import java.util.List;
  7. @RestController
  8. @CrossOrigin//可以加在类上,也可以加到方法上
  9. public class HelloController {
  10. @Autowired
  11. private IUserService userService;
  12. @ResponseBody
  13. @RequestMapping("/hello")
  14. public String hello(){
  15. return "Hello World!";
  16. }
  17. @ResponseBody
  18. @RequestMapping("/users")
  19. public List<User> users(){
  20. return userService.getList();
  21. }
  22. }

Service

  1. package com.dgt.study.service;
  2. import com.dgt.study.entity.User;
  3. import java.util.List;
  4. /**
  5. * Description:业务层接口
  6. * User: HuaYan
  7. * Date: 2022-08-04
  8. */
  9. public interface IUserService {
  10. /***
  11. * 获取用户列表
  12. * @return
  13. */
  14. List<User> getList();
  15. }

service实现类

  1. package com.dgt.study.service.impl;
  2. import com.dgt.study.entity.User;
  3. import com.dgt.study.mapper.UserMapper;
  4. import com.dgt.study.service.IUserService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import java.util.List;
  8. /**
  9. * Description:业务层处理
  10. * User: HuaYan
  11. * Date: 2022-08-04
  12. */
  13. @Service
  14. public class UserServiceImpl implements IUserService {
  15. @Autowired
  16. private UserMapper userMapper;
  17. @Override
  18. public List<User> getList() {
  19. return userMapper.selectUserList();
  20. }
  21. }

mapper类

  1. package com.dgt.study.mapper;
  2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  3. import com.dgt.study.entity.User;
  4. import org.springframework.stereotype.Repository;
  5. import java.util.List;
  6. /**
  7. * Description:
  8. * User: HuaYan
  9. * Date: 2022-08-04
  10. */
  11. @Repository
  12. public interface UserMapper extends BaseMapper<User> {
  13. List<User> selectUserList();
  14. }

sql处理

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.dgt.study.mapper.UserMapper">
  6. <resultMap type="com.dgt.study.entity.User" id="UserResult">
  7. <result property="id" column="id" />
  8. <result property="name" column="name" />
  9. <result property="date" column="date" />
  10. <result property="address" column="address" />
  11. </resultMap>
  12. <sql id="selectPdmBomVo">
  13. select id, name, date, address from user
  14. </sql>
  15. <select id="selectUserList" resultMap="UserResult">
  16. <include refid="selectPdmBomVo"/>
  17. </select>
  18. </mapper>

二、Vue

1、Vue简介

Vue的特点:

  • 1、采用组件化模式,提高代码复用率、且让代码更好维护。

    • 在Vue里面,一个.vue文件就是一个组件;

  • 2、声明式编码,让编码人员无需直接操作DOM,提高开发效率。

  • 3、使用虚拟DOM+优秀的Diff算法,尽量复用DOM节点。

    • 虚拟DOM就是页面中的数据;

2、安装vue

官方API:介绍 | Vue CLI 脚手架安装:【Vue脚手架安装教程】-CSDN博客

  1. npm -v #查看当前版本为5.0.1
  2. npm view npm version #查看npm最新版本为6.0.1
  3. npm install -g npm@6.0.1 #更新最新版本
  4. npm vue init new-project #最后再重新安装vue项目
  1. #nmp安装vue
  2. #设置淘宝镜像
  3. npm config set registry https://registry.npm.taobao.org
  4. #全局安装vue
  5. npm install -g @vue/cli
  6. #重启cmd
  7. #创建vue项目
  8. vue create test
  9. #切到项目目录
  10. cd test
  11. #运行vue项目
  12. npm run serve
  13. #浏览器打开:http://localhost:8080/

3、vue连接后台接口

测试使用element-ui框架:Element - The world's most popular Vue UI framework

  1. #安装element-ui
  2. npm install element-ui --save
  3. #若vue版本太高需安装element-plus
  4. npm install element-plus --save
  5. #运行vue项目
  6. npm run serve
  7. #浏览器打开:http://localhost:8080/

修改APP.vue

  1. <template>
  2. <HelloWorld/>
  3. </template>
  4. <script>
  5. import HelloWorld from './components/HelloWorld.vue'
  6. export default {
  7. name: 'App',
  8. components: {
  9. HelloWorld
  10. }
  11. }
  12. </script>
  13. <style>
  14. #app {
  15. font-family: Avenir, Helvetica, Arial, sans-serif;
  16. -webkit-font-smoothing: antialiased;
  17. -moz-osx-font-smoothing: grayscale;
  18. text-align: center;
  19. color: #2c3e50;
  20. margin-top: 60px;
  21. }
  22. </style>

修改main.js

  1. import {createApp} from 'vue'
  2. import App from './App.vue'
  3. import ElementPlus from 'element-plus';
  4. import 'element-plus/dist/index.css';
  5. createApp(App).use(ElementPlus).mount('#app')

修改HelloWorld组件

  1. <template>
  2. <el-table
  3. :data="tableData"
  4. style="width: 100%">
  5. <el-table-column
  6. prop="date"
  7. label="日期"
  8. width="180">
  9. </el-table-column>
  10. <el-table-column
  11. prop="name"
  12. label="姓名"
  13. width="180">
  14. </el-table-column>
  15. <el-table-column
  16. prop="address"
  17. label="地址">
  18. </el-table-column>
  19. </el-table>
  20. </template>
  21. <script>
  22. import axios from "axios";
  23. export default {
  24. name: 'HelloWorld',
  25. methods: {
  26. /** 查询属性列表 */
  27. getList () {
  28. axios.get("http://localhost:8888/users").then(res=>{
  29. this.tableData =res.data
  30. }).catch(err=>{
  31. console.log(err)
  32. })
  33. },
  34. },
  35. props: {
  36. msg: String
  37. },
  38. mounted() {
  39. this.getList()
  40. },
  41. data () {
  42. return {
  43. tableData: [{
  44. date: '2016-05-02',
  45. name: '王小虎',
  46. address: '上海市普陀区金沙江路 1518 弄'
  47. }, {
  48. date: '2016-05-04',
  49. name: '王小虎',
  50. address: '上海市普陀区金沙江路 1517 弄'
  51. }, {
  52. date: '2016-05-01',
  53. name: '王小虎',
  54. address: '上海市普陀区金沙江路 1519 弄'
  55. }, {
  56. date: '2016-05-03',
  57. name: '王小虎',
  58. address: '上海市普陀区金沙江路 1516 弄'
  59. }]
  60. }
  61. }
  62. }
  63. </script>
  64. <!-- Add "scoped" attribute to limit CSS to this component only -->
  65. <style scoped>
  66. h3 {
  67. margin: 40px 0 0;
  68. }
  69. ul {
  70. list-style-type: none;
  71. padding: 0;
  72. }
  73. li {
  74. display: inline-block;
  75. margin: 0 10px;
  76. }
  77. a {
  78. color: #42b983;
  79. }
  80. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/840328
推荐阅读
相关标签
  

闽ICP备14008679号