Java SpringBoot项目JPA查询数据demo

news2025/5/19 11:37:35

目录

  • 一、前置
    • 1、IDEA创建SpringBoot项目
    • 2、基础设置、配置
  • 二、JPA查询数据
    • 1、配置SQL server连接
    • 2、创建实体类
      • QueryEntity.java
      • 生成`Getter and Setter`
    • 3、创建Repository接口
      • QueryRepository.java
    • 4、创建Service服务类
      • QueryService.java
    • 5、创建Controller控制器类
      • QueryController.java
    • 6、测试
      • 运行项目
      • 访问接口

一、前置

1、IDEA创建SpringBoot项目

  • 选择spring Initializr,输入项目名,选择项目路径等,最后点击Next
    创建项目
  • 勾选Spring Web
    选择Spring Web
  • 勾选需要使用的数据库驱动,本次demo中使用的是SQL server数据库,故选择SQL server Driver
    选择SQL server
  • 选择完后,点击Create

2、基础设置、配置

  • 项目创建完成并打开后,按需配置项目Maven
    点开设置
  • 设置Maven在这里插入图片描述
  • 设置完成后等待加载完成

二、JPA查询数据

  • 在项目中分别创建好以下包及文件
    在这里插入图片描述

1、配置SQL server连接

  • 找到application.properties文件,配置SQL Server 数据库连接
# 应用服务 WEB 访问端口
server.port=8080

spring.datasource.url=jdbc:sqlserver://IP:端口号;databaseName=数据库名
spring.datasource.username=数据库连接用户名
spring.datasource.password=数据库连接密码
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

2、创建实体类

QueryEntity.java

package com.example.Entity;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "tb")      // 数据表名
public class QueryEntity {
    @Id
    // 主键字段
    private Long CID;
    private String CUSTOMER_ITEM_CODE;
    private String CUSTOMER_ITEM_NAME;
    private String ACTUAL_INVENTORY_QTY;

    public Long getCID() {
        return CID;
    }

    public void setCID(Long CID) {
        this.CID = CID;
    }

    public String getCUSTOMER_ITEM_CODE() {
        return CUSTOMER_ITEM_CODE;
    }

    public void setCUSTOMER_ITEM_CODE(String CUSTOMER_ITEM_CODE) {
        this.CUSTOMER_ITEM_CODE = CUSTOMER_ITEM_CODE;
    }

    public String getCUSTOMER_ITEM_NAME() {
        return CUSTOMER_ITEM_NAME;
    }

    public void setCUSTOMER_ITEM_NAME(String CUSTOMER_ITEM_NAME) {
        this.CUSTOMER_ITEM_NAME = CUSTOMER_ITEM_NAME;
    }

    public String getACTUAL_INVENTORY_QTY() {
        return ACTUAL_INVENTORY_QTY;
    }

    public void setACTUAL_INVENTORY_QTY(String ACTUAL_INVENTORY_QTY) {
        this.ACTUAL_INVENTORY_QTY = ACTUAL_INVENTORY_QTY;
    }

    @Override
    public String toString() {
        return "QueryEntity{" +
                "CID=" + CID +
                ", CUSTOMER_ITEM_CODE='" + CUSTOMER_ITEM_CODE + '\'' +
                ", CUSTOMER_ITEM_NAME='" + CUSTOMER_ITEM_NAME + '\'' +
                ", ACTUAL_INVENTORY_QTY='" + ACTUAL_INVENTORY_QTY + '\'' +
                '}';
    }
}


生成Getter and Setter

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 生成toString()
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3、创建Repository接口

  • 用于处理数据库操作

QueryRepository.java

  • 创建时选择Interface
    在这里插入图片描述
package com.example.Repository;

import com.example.Entity.QueryEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface QueryRepository extends JpaRepository<QueryEntity, Long> {
    // 使用方法名查询所有数据
    List<QueryEntity> findAll();

    // 使用 JPQL 自定义查询
    @Query(value = "SELECT CUSTOMER_ITEM_CODE, CUSTOMER_ITEM_NAME, ACTUAL_INVENTORY_QTY FROM [dbo].[tb]", nativeQuery = true)
    List<QueryEntity> findAllByAll();
}

4、创建Service服务类

  • 用于处理业务逻辑

QueryService.java

package com.example.Service;

import com.example.Entity.QueryEntity;
import com.example.Repository.QueryRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class QueryService {
    @Autowired
    private QueryRepository queryRepository;

    public List<QueryEntity> getAllSCHubRecords() {
        return queryRepository.findAll();
    }
}

5、创建Controller控制器类

  • 用于处理 HTTP 请求

QueryController.java

package com.example.Controller;

import com.example.Entity.QueryEntity;
import com.example.Service.QueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
//定义接口
@RequestMapping("/api/schub")
public class QueryController {
    @Autowired
    private QueryService queryService;

    //查询所有数据
    @GetMapping
    public List<QueryEntity> getAllSCHubRecords() {
        return queryService.getAllSCHubRecords();
    }
}

6、测试

运行项目

在这里插入图片描述
在这里插入图片描述

访问接口

http://localhost:8080/api/schub
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2378060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue2集成可在线编辑的思维导图(simple-mind-map)

最近要求做一个可在线编辑的思维导图&#xff0c;经过层层调研和实测&#xff0c;最简单的思维导图导图实现还得是simple-mind-map组件 simple-mind-map中文文档 当前我使用的是vue2项目&#xff0c;目前没试过是否支持vue3&#xff0c;但是看官网描述他们也给了有vue3的demo项…

如何在Windows右键新建菜单中添加自定义项,将notepad添加到新建菜单

一、简介 Windows 右键新建菜单的核心管理机制隐藏在注册表的 HKEY_CLASSES_ROOT 根键中。这里存在两种关键注册表项&#xff1a;文件扩展名项和文件类型项&#xff0c;它们共同构成了新建菜单的完整控制体系。 以常见的.txt文件为例&#xff0c;系统通过以下机制实现新建菜单…

CS016-4-unity ecs

【37】将系统转换为任务 Converting System to Job 【Unity6】使用DOTS制作RTS游戏|17小时完整版|CodeMonkey|【37】将系统转换为任务 Converting System to Job_哔哩哔哩_bilibili a. 将普通的方法&#xff0c;转化成job。第一个是写一个partial struct xxx&#xff1b;第二…

微信小程序第三方代开发模式技术调研与实践总结

🚀 微信小程序第三方代开发模式技术调研与实践总结 📖 前言 随着企业对私有化品牌运营诉求的增加,许多大型客户希望将原本由 SaaS 平台统一提供的小程序迁移至自有主体(AppID)下运行,同时又希望继续沿用 SaaS 平台的业务服务与数据托管方式。微信开放平台提供的“小程…

upload-labs通关笔记-第8关 文件上传之点绕过

目录 一、点绕过原理 二、deldot()函数 三、源码分析 四、渗透实战 1、构建脚本test8.php 2、打开靶场 3、bp开启拦截 4、点击上传 5、bp拦截 6、后缀名增加点 7、发包并获取脚本地址 8、访问脚本 本文通过《upload-labs靶场通关笔记系列》来进行upload-labs靶场的渗…

PCL PolygonMesh 与 TextureMesh 源码阅读与简单测试

Title: PCL PolygonMesh 与 TextureMesh 源码阅读与简单测试 文章目录 I . PolygonMesh1. PolygonMesh 结构体2. Vertices 结构体与点云索引3. 测试 PolygonMesh II. TextureMesh1. TextureMesh 结构体2. TexMaterial 结构体3. 纹理坐标与纹理坐标索引4. 测试 TextureMesh 以下…

量子算法:开启计算新时代的技术密码

摘要 量子算法是利用量子力学特性&#xff08;如叠加态、纠缠、干涉&#xff09;设计的计算模型&#xff0c;在特定问题上相比经典算法具有指数级加速优势。本文深入探讨了量子算法的核心原理、代表性算法及其在多个领域的应用&#xff0c;分析了量子算法面临的挑战与未来发展…

多线程代码案例-1 单例模式

单例模式 单例模式是开发中常见的设计模式。 设计模式&#xff0c;是我们在编写代码时候的一种软性的规定&#xff0c;也就是说&#xff0c;我们遵守了设计模式&#xff0c;代码的下限就有了一定的保证。设计模式有很多种&#xff0c;在不同的语言中&#xff0c;也有不同的设计…

CSS实现文本自动平衡text-wrap: balance

不再有排版孤行和寡行 我们都知道那些标题&#xff0c;最后一个单词换行并单独站在新行上&#xff0c;破坏了视觉效果&#xff0c;看起来很奇怪。当然&#xff0c;有老式的 手动换行或将内容分成不同部分。但您听说过text-wrap: balance吗&#xff1f; 通过应用text-wrap: bal…

mac M芯片运行docker-desktop异常问题

虽然mac已经迭代到m4了&#xff0c;但官方的docker-desktop运行仍然有问题&#xff0c;包括但不限于&#xff1a; 命令行docker找不到docker-desk打不开docker-desktop闪退容器起不来 尝试不同版本后&#xff0c;看到了其他可以在mac跑docker的开源方法&#xff0c;更简单、轻…

事件响应策略规范模版

事件响应策略 一、事件分级定义 根据事件对业务的影响程度和紧急程度,将事件分为 4个等级(P1-P4),明确各级事件的判定标准:、 二、响应时效承诺 响应时间(从事件确认到首次回复) P1 事件:15 分钟内响应(724 小时电话 / 工单优先接入) P2 事件:30 分钟内响应(工…

MGX:多智能体管理开发流程

MGX的多智能体团队如何通过专家混合系统采用全新方法,彻底改变开发流程,与当前的单一智能体工具截然不同。 Lovable和Cursor在自动化我们的特定开发流程方面取得了巨大飞跃,但问题是它们仅解决软件开发的单一领域。 这就是MGX(MetaGPT X)的用武之地,它是一种正在重新定…

采购流程规范化如何实现?日事清流程自动化助力需求、采购、财务高效协作

采购审批流程全靠人推进&#xff0c;内耗严重&#xff0c;效率低下&#xff1f; 花重金上了OA&#xff0c;结果功能有局限、不灵活&#xff1f; 问题出在哪里&#xff1f;是我们的要求太多、太苛刻吗&#xff1f;NO&#xff01; 流程名称&#xff1a; 采购审批管理 流程功能…

[模型部署] 3. 性能优化

&#x1f44b; 你好&#xff01;这里有实用干货与深度分享✨✨ 若有帮助&#xff0c;欢迎&#xff1a;​ &#x1f44d; 点赞 | ⭐ 收藏 | &#x1f4ac; 评论 | ➕ 关注 &#xff0c;解锁更多精彩&#xff01;​ &#x1f4c1; 收藏专栏即可第一时间获取最新推送&#x1f514;…

Vue3 加快页面加载速度 使用CDN外部库的加载 提升页面打开速度 服务器分发

介绍 CDN&#xff08;内容分发网络&#xff09;通过全球分布的边缘节点&#xff0c;让用户从最近的服务器获取资源&#xff0c;减少网络延迟&#xff0c;显著提升JS、CSS等静态文件的加载速度。公共库&#xff08;如Vue、React、Axios&#xff09;托管在CDN上&#xff0c;减少…

接触感知 钳位电路分析

以下是NG板接触感知电路的原理图。两极分别为P3和P4S&#xff0c;电压值P4S < P3。 电路结构分两部分&#xff0c;第一部分对输入电压进行分压钳位。后级电路使用LM113比较器芯片进行电压比较&#xff0c;输出ST接触感知信号。 钳位电路输出特性分析 输出电压变化趋势&a…

使用 gcloud CLI 自动化管理 Google Cloud 虚拟机

被操作的服务器&#xff0c;一定要开启API完全访问权限&#xff0c;你的电脑安装gcloud CLI前一定要先安装Python3&#xff01; 操作步骤 下载地址&#xff0c;安装大概需要十分钟&#xff1a;https://cloud.google.com/sdk/docs/install?hlzh-cn#windows 选择你需要的版本&a…

SQL语句,索引,视图,存储过程以及触发器

一、初识MySQL 1.数据库 按照数据结构来组织、存储和管理数据的仓库&#xff1b;是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合&#xff1b; 2.OLTP与OLAP OLTP&#xff08; On-Line transaction processing &#xff09;翻译为联机事务处理&am…

7. 进程控制-进程替换

目录 1. 进程替换 1.1 单进程版&#xff1a; 1.2 进程替换的原理 1.3 多进程版-验证各种程序替换接口 2. 进程替换的各种接口 2.1 execl 2.2 execlp 2.3 execv 2.4 execvp 2.5 execle 1. 进程替换 上图为程序替换的接口&#xff0c;之后会详细介绍。 1.1 单进程版&am…

理解 C# 中的各类指针

前言 变量可以理解成是一块内存位置的别名&#xff0c;访问变量也就是访问对应内存中的数据。 指针是一种特殊的变量&#xff0c;它存储了一个内存地址&#xff0c;这个内存地址代表了另一块内存的位置。 指针指向的可以是一个变量、一个数组元素、一个对象实例、一块非托管内存…