SpringBoot+vue3实现一个查询的实例

本文档提供了一个前后端分离项目Demo,详细介绍了使用SpringBoot后端和Vue3前端实现查询功能的步骤。在后端部分,涵盖了从实体类User、数据库访问接口到Controller的实现;在前端部分,重点讲解了Vue3组件如ListCompent.vue和配置文件vue.config.js的设置。通过这个实例,读者可以学习到如何在实际项目中构建查询功能。

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

前后端分离项目Demo

一、所需的依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version> 
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

二、后端项目

后端项目中,类和接口中package com.ql.buy.import com.ql.buy.,可以删掉,按照自己java项目实际情况(alt + insert 键)导入

1、实体类User
package com.ql.buy.entity;
import lombok.Data;

@Data
public class User {
    private String id;
    private String userName;
    private String phone;
}
package com.example.demo.entity;

import lombok.Data;

@Data
public class ResultData {

    private Object data;
    private String code;
    private String msg;

}

2、访问数据库接口Dao
package com.ql.buy.dao;
import com.ql.buy.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface UserDao {

    List<User> getUser();

}

3、service层接口
package com.ql.buy.service;
import com.ql.buy.entity.User;
import com.ql.buy.util.ResultData;
import java.util.List;

public interface UserService {
    ResultData getData();

}
4、service的实现
package com.ql.buy.service;

import com.ql.buy.dao.UserDao;
import com.ql.buy.util.ResultData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    UserDao userDao;

    @Override
    public ResultData getData() {
        ResultData resultData = new ResultData();
        resultData.setData(userDao.getUser());
        resultData.setCode("100");
        resultData.setMsg("查询数据");
        return resultData;
    }
}

5、Controller代码
package com.ql.buy.controller;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.ql.buy.service.UserService;
import com.ql.buy.util.ResultData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@CrossOrigin
public class UserController {
    @Autowired
    UserService userService;

    /**
     * 获取用户的信息
     * @return
     */
    @GetMapping("/getData")
    @ResponseBody
    public String getUserInfo() throws JsonProcessingException {
        ResultData data = userService.getData();
        String json =JSONObject.toJSONString(data.getData());
        return json;
    }


}

6、userMapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ql.buy.dao.UserDao">
  
    <select id="getUser" resultType="user">
        select * from user limit 5;
    </select>
</mapper>

7、application.properties文件
server.port=8088
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf8&useSSL=false
#数据库密码改成自己本地的
spring.datasource.username=账号
spring.datasource.password=密码
#mybatis,com.ql.buy.entity改成自己的实际实体类路径
mybatis.type-aliases-package=,com.ql.buy.entity
mybatis.mapper-locations=classpath:mapper/*.xml
8、ResultData类
package com.ql.buy.util;

import lombok.Data;

@Data
public class ResultData {

    private String code;
    private String msg;
    private Object data;
    
}

9、目录结构

在这里插入图片描述

三、前端项目Vue3

使用的点击事件,默认不显示,当点击的时候显示,请看【4、效果】

1、ListCompent.vue
<template>
  <table>
    <tr v-for="(item,index) in items" :key="index">
      <td >{{item.userName}}</td>
    </tr>
  </table>
  <div>
    <button @click="iniData">点击</button>
  </div>
</template>
<script>
import axios from 'axios';
  export default {
    data(){
      return{
        items:[],
      }
    },
    methods:{
      iniData(){
        axios.get('/getData').then(response =>{
          this.items = response.data;
        }).catch(error =>{
          console.log(error);
        })
      }
    },
  }

</script>


2、App.vue
<template>
  <div id="app">
    <ListCompent/>
  </div>

</template>

<script>
import ListCompent from './components/ListCompent.vue'; // 引入自定义的组件


export default {
  components: {
    ListCompent// 在父组件中注册自定义的组件
  },
};
</script>
3、vue.config.js
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  productionSourceMap: false,
  configureWebpack: {
    devServer:{
      proxy:{
        '/getData':{
          target: 'http://localhost:8088/',
          changeOrigin: true,
        }
      }
    }
  },
  lintOnSave: false
})

4、效果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白嫖不白嫖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值