Springboot+MySQL 实现从数据库获取数据展示到前端

本文介绍如何使用SpringBoot框架整合MyBatis,包括创建数据库表、搭建SpringBoot项目、配置application.properties、导入依赖、编写实体类、Mapper、Controller及前端页面,最终展示运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.运行效果

效果图如下:
在这里插入图片描述

2.创建数据库表

数据库名为"springboot",数据库表名为"user",数据库表里面放了5条数据,字段分别为:“id”,“name”,“age”,“email”。
在这里插入图片描述

3.新建SpringBoot项目

1、选择Spring Initializr,在本地路径下选择对应的SDK文件,选择默认的Service URL,选择Next。
在这里插入图片描述
2、把Version改为“1.0.0-SNAPSHOT”,选择Next。
在这里插入图片描述
3、这里需要导入3个依赖,选择Web-Spring Web,选择SQL-MySQL Driver,选择Developer Tool-Lombok。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、选择存放路径。
在这里插入图片描述
5、创建项目时可能会出现这种error。
在这里插入图片描述
5.1、打开settings,找到http Proxy,选择Auto-detect proxy settings,选择Check connection,输入“https://start.aliyun.com/”。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.2、按之前的步骤把项目重新创建一次,选择“Custom”输入“https://start.aliyun.com/”,其他的步骤不变。

在这里插入图片描述
6.创建好的项目是这样子的。
在这里插入图片描述
7.右下角的Maven提示选择“Enable Auto-Import”,pom有添加依赖时自动导入。
在这里插入图片描述

4.运行SpringBoot

1、先写个小页面让SpringBoot跑起来,在demo包下新建“controller”包,“controller”包下新建“HelloController”类。
2、在“HelloController”方法上添加注解“@RestController”,意思是返回json数据,“@Controller”是返回页面。
3、写个Hello方法,String返回值类型,在方法上添加”@RequestMapping“返回json数据,@RequestMapping("/hello")括号里面的内容是等下要访问的路径名,方法里面直接return ”Hello“。
4、默认是8080端口。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.配置application.properties

在这里插入图片描述
在这里插入图片描述
application.properties 代码如下:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot?characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

6.导入依赖

除了之前导入的”依赖还需要下面这些依赖。

		<!--内置tomcat对Jsp支持的依赖,用于编译Jsp-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!--引入jsp相关-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <!--引入Servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!--引入jstl-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

7.开始写项目

一般的顺序是:pojo → Mapper/Dao → Controller → Service
Entity:实体层,数据库在项目中的类。pojo 实体类 User.java
Dao:持久层,主要与数据库交互。Mapper UserMapper(接口,需要写实现类)
Service层:业务层 控制业务。(接口,需要写实现类)
Controller层:控制层 控制业务逻辑。 UserController.java

1、在demo包下新建pojo包,pojo包下新建User类。
在这里插入图片描述
2、User.java 中添加数据库表user中的四个字段,”id、name、age、email“和getter和setter方法。
User.java

package com.example.demo.pojo;

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private String email;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

8.编写Mapper

1、demo包下创建mapper包,mapper包下创建UserMapper接口
在这里插入图片描述
2、UserMapper 是接口,@Mapper为了把mapper这个DAO交给Spring管理,方法里面的内容是从user表中查询所有的数据。

UserMapper.java

package com.example.demo.mapper;

import com.example.demo.pojo.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")
    List<User> findAll();
}

9.编写Controller

1、在controller包下新建UserController类。
在这里插入图片描述

2、@Controller 是返回页面,需要调用UserMapper,所以用@AutoWired
自动注入UserMapper,return ”user“ 返回的是一个页面,所以需要创建一个
user.jsp。

UserController.java

package com.example.demo.controller;


import com.example.demo.mapper.UserMapper;
import com.example.demo.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
public class UserControll {
    @Autowired
    UserMapper userMapper;

    @RequestMapping("/user")
    public String userMapper(Model m){
        List<User> users = userMapper.findAll();
        m.addAttribute("user",users);
        return "user";
    }


}

10. 创建前端页面

1、在src/main下创建webapp文件夹,webapp文件夹下创建WEB-INF文件夹,WEB-INF文件夹下创建jsp文件夹。
src
-main
–webapp
—WEB-INF
----jsp

在这里插入图片描述
2、打开file中的Project Stucture。
在这里插入图片描述
3、选择Modules,选择项目demo,选择Web,选择右边的+号,添加webapp的路径。
在这里插入图片描述
4、webapp就被标记成web文件夹,在jsp文件夹下新建user.jsp文件。
在这里插入图片描述
如果jsp页面报错的话,可以看下pom文件的依赖是否都导入成功。

user.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<table align='center' border='1' cellspacing='0'>
    <tr>
        <td>id</td>
        <td>name</td>
        <td>age</td>
        <td>email</td>
    </tr>
    <c:forEach items="${user}" var="u" varStatus="st">
        <tr>
            <td>${u.id}</td>
            <td>${u.name}</td>
            <td>${u.age}</td>
            <td>${u.email}</td>
        </tr>
    </c:forEach>
</table>

11.运行效果

在这里插入图片描述

实现前端上传文件到本地并将url存入本地数据库,需要前后端协同完成以下几个步骤: 1. 前端使用 Vue.js 实现文件上传,并将文件传递给后端。 2. 后端使用 Spring Boot 接收前端传递的文件,并将文件保存到本地。 3. 后端生成本地文件的URL,将URL保存到数据库中。 4. 前端数据库中获取URL,展示文件信息。 以下是具体实现步骤: 1. 前端实现文件上传,使用 Vue.js 和 Axios 实现,代码如下: ```html <template> <div> <input type="file" @change="onFileChange"> <button @click="uploadFile">上传</button> </div> </template> <script> import axios from 'axios'; export default { data() { return { file: null }; }, methods: { onFileChange(event) { this.file = event.target.files[0]; }, uploadFile() { const formData = new FormData(); formData.append('file', this.file); axios.post('/api/upload', formData).then(response => { console.log(response.data); }).catch(error => { console.log(error); }); } } }; </script> ``` 2. 后端使用 Spring Boot 接收前端传递的文件,并将文件保存到本地。代码如下: ```java @RestController @RequestMapping("/api") public class FileController { @Value("${file.upload-dir}") private String uploadDir; @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { String filename = file.getOriginalFilename(); Path path = Paths.get(uploadDir, filename); Files.write(path, file.getBytes()); return "上传成功"; } } ``` 在 Spring Boot 中,使用 `@Value` 注解获取配置文件中的变量值,即上传文件存储的路径。 3. 后端生成本地文件的URL,将URL保存到数据库中。代码如下: ```java @RestController @RequestMapping("/api") public class FileController { @Autowired private FileRepository fileRepository; @Value("${file.base-url}") private String baseUrl; @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { String filename = file.getOriginalFilename(); Path path = Paths.get(uploadDir, filename); Files.write(path, file.getBytes()); String url = baseUrl + filename; fileRepository.save(new FileEntity(filename, url)); return "上传成功"; } } ``` 在 Spring Boot 中,使用 `@Value` 注解获取配置文件中的变量值,即本地文件的URL前缀。 4. 前端数据库中获取URL,展示文件信息。代码如下: ```html <template> <div> <div v-for="file in files" :key="file.id"> <a :href="file.url">{{ file.name }}</a> </div> </div> </template> <script> import axios from 'axios'; export default { data() { return { files: [] }; }, mounted() { axios.get('/api/files').then(response => { this.files = response.data; }).catch(error => { console.log(error); }); } }; </script> ``` 在 Vue.js 中,使用 `axios` 发送请求获取文件信息,展示文件的名称和URL。需要注意的是,文件的URL需要使用 `<a>` 标签展示,并且需要设置 `href` 属性。
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值