当前位置: 首页 > news >正文

【Java+Springboot】------ 通过JDBC+GetMapping方法进行数据select查询、多种方式传参、最简单的基本示例!

 一、JDBC如何使用、PostGresql数据库

1、在pom.xml 先引用jdbc组件。

 <!--jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>

2、在pom.xml 再引用postgresql组件。

  <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.8</version></dependency>

3、示例图如下:

4、pom.xml完整代码: 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.dcs</groupId><artifactId>lybdemo</artifactId><version>0.0.1-SNAPSHOT</version><name>lybdemo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!--jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--StringUtils 引用--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version> <!-- 请使用最新的版本 --></dependency><!--PostGresql数据库--><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.8</version></dependency><!--数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version></dependency><!--阿里巴巴--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.70</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

二、连接池参数设置

1、在application.properties中加上连接池配置 

spring.datasource.url=jdbc:postgresql://192.168.1.18:8088/dcs_xg_test
spring.datasource.username=postgres
spring.datasource.password=KzKj@20230331

2、效果如下:

三、查询数据库中数据 【提示:postgresql数据库中 如果表字段名使用大写方式、sql语句的字段名需要使用“\"” 引用起来

1、创建Controller控制器类 

2、调用JDBC连接类 

private final JdbcTemplate jdbcTemplate;//连接变量@Autowiredpublic testController(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;//赋予权限}

3、无参数查询数据方式。

 /*** 无参数获取数据方式* **/@GetMapping("/getselect")public IMXResponse  getselect()throws Exception {IMXResponse ret=new IMXResponse();List<Map<String,Object>> list= jdbcTemplate.queryForList("SELECT \"CNAME\",\"ID\",\"STORE_PATH\",\"PUBLISH_TIME\" FROM \"PUB_FILES\" ORDER BY \"PUBLISH_TIME\" DESC LIMIT 5 OFFSET 0 ");//查询数据ret.setSuccess(1);ret.setJson(list);return ret;}

在浏览器地址栏输入如下地址显示结果如下:

4、单个参数查询数据方式。

 /*** 单个参数获取数据方式* **/@GetMapping("/getselectId")public IMXResponse  getselectId(@RequestParam(name = "id", defaultValue = "") String id)throws Exception {System.out.print(id);//f36264bd-b68f-4183-8aac-9de96b0f832aIMXResponse ret=new IMXResponse();String v_id=id.trim();if(v_id.equals("")==false){List<Map<String,Object>> list= jdbcTemplate.queryForList("SELECT \"CNAME\",\"ID\",\"STORE_PATH\",\"PUBLISH_TIME\" FROM \"PUB_FILES\" WHERE \"ID\"='"+v_id+"' ORDER BY \"PUBLISH_TIME\" DESC LIMIT 5 OFFSET 0 ");ret.setSuccess(1);ret.setJson(list);}else{ret.setSuccess(0);ret.setJson("");}return ret;}

在浏览器地址栏输入如下地址显示结果如下:

4、多个参数获取数据方式

/*** 多个参数获取数据方式* **/@GetMapping("/getselectMulitId")public IMXResponse  getselectMulitId(@RequestParam String id,@RequestParam String billid)throws Exception {//http://127.0.0.1:8080/getselectMulitId?id=2211091436481667975808d1d5cc3&billid=13e9c0f11ddd4c1c81fe222a73364252System.out.print(id);//IMXResponse ret=new IMXResponse();String v_id=id.trim();String v_billid=billid.trim();if(v_id.equals("")==false){List<Map<String,Object>> list= jdbcTemplate.queryForList("SELECT \"CNAME\",\"ID\",\"STORE_PATH\",\"PUBLISH_TIME\" FROM \"PUB_FILES\" WHERE \"ID\"='"+v_id+"' AND \"BILL_ID\"='"+v_billid+"' ORDER BY \"PUBLISH_TIME\" DESC LIMIT 5 OFFSET 0 ");ret.setSuccess(1);ret.setJson(list);}else{ret.setSuccess(0);ret.setJson("");}return ret;}

5、json格式数据传参方式获取数据。这种数据格式需要实现ajax方法调用 

 /*** 传object参数获取数据方式* **/@GetMapping("/getselectObject")public IMXResponse  getselectObject(@RequestParam String whereJson)throws Exception {//http://127.0.0.1:8080/getselectObject?whereJson={id:2211091436481667975808d1d5cc3,billid:13e9c0f11ddd4c1c81fe222a73364252}//此地址参数需要JSON.stringify() 编译一下System.out.print(whereJson);//IMXResponse ret=new IMXResponse();String v_whereJson=whereJson.trim();if(v_whereJson.equals("")==false){JSONObject jsonObject=JSONObject.parseObject(v_whereJson);String v_id=jsonObject.getString("id");String v_billid=jsonObject.getString("billid");List<Map<String,Object>> list= jdbcTemplate.queryForList("SELECT \"CNAME\",\"ID\",\"STORE_PATH\",\"PUBLISH_TIME\" FROM \"PUB_FILES\" WHERE \"ID\"='"+v_id+"' AND \"BILL_ID\"='"+v_billid+"' ORDER BY \"PUBLISH_TIME\" DESC LIMIT 5 OFFSET 0 ");ret.setSuccess(1);ret.setJson(list);}else{ret.setSuccess(0);ret.setJson("");}return ret;}

四、testController 完整代码:

package com.dcs.lybdemo.controller;import com.alibaba.fastjson.JSONObject;
import com.dcs.lybdemo.common.IMXResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
import java.util.Map;@RestController
public class testController {private final JdbcTemplate jdbcTemplate;@Autowiredpublic testController(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}/*** 无参数获取数据方式* **/@GetMapping("/getselect")public IMXResponse  getselect()throws Exception {IMXResponse ret=new IMXResponse();List<Map<String,Object>> list= jdbcTemplate.queryForList("SELECT \"CNAME\",\"ID\",\"STORE_PATH\",\"PUBLISH_TIME\" FROM \"PUB_FILES\" ORDER BY \"PUBLISH_TIME\" DESC LIMIT 5 OFFSET 0 ");ret.setSuccess(1);ret.setJson(list);return ret;}/*** 单个参数获取数据方式* **/@GetMapping("/getselectId")public IMXResponse  getselectId(@RequestParam(name = "id", defaultValue = "") String id)throws Exception {System.out.print(id);//f36264bd-b68f-4183-8aac-9de96b0f832aIMXResponse ret=new IMXResponse();String v_id=id.trim();if(v_id.equals("")==false){List<Map<String,Object>> list= jdbcTemplate.queryForList("SELECT \"CNAME\",\"ID\",\"STORE_PATH\",\"PUBLISH_TIME\" FROM \"PUB_FILES\" WHERE \"ID\"='"+v_id+"' ORDER BY \"PUBLISH_TIME\" DESC LIMIT 5 OFFSET 0 ");ret.setSuccess(1);ret.setJson(list);}else{ret.setSuccess(0);ret.setJson("");}return ret;}/*** 多个参数获取数据方式* **/@GetMapping("/getselectMulitId")public IMXResponse  getselectMulitId(@RequestParam String id,@RequestParam String billid)throws Exception {//http://127.0.0.1:8080/getselectMulitId?id=2211091436481667975808d1d5cc3&billid=13e9c0f11ddd4c1c81fe222a73364252System.out.print(id);//IMXResponse ret=new IMXResponse();String v_id=id.trim();String v_billid=billid.trim();if(v_id.equals("")==false){List<Map<String,Object>> list= jdbcTemplate.queryForList("SELECT \"CNAME\",\"ID\",\"STORE_PATH\",\"PUBLISH_TIME\" FROM \"PUB_FILES\" WHERE \"ID\"='"+v_id+"' AND \"BILL_ID\"='"+v_billid+"' ORDER BY \"PUBLISH_TIME\" DESC LIMIT 5 OFFSET 0 ");ret.setSuccess(1);ret.setJson(list);}else{ret.setSuccess(0);ret.setJson("");}return ret;}/*** 传object参数获取数据方式* **/@GetMapping("/getselectObject")public IMXResponse  getselectObject(@RequestParam String whereJson)throws Exception {//http://127.0.0.1:8080/getselectObject?whereJson={id:2211091436481667975808d1d5cc3,billid:13e9c0f11ddd4c1c81fe222a73364252}//此地址参数需要JSON.stringify() 编译一下System.out.print(whereJson);//IMXResponse ret=new IMXResponse();String v_whereJson=whereJson.trim();if(v_whereJson.equals("")==false){JSONObject jsonObject=JSONObject.parseObject(v_whereJson);String v_id=jsonObject.getString("id");String v_billid=jsonObject.getString("billid");List<Map<String,Object>> list= jdbcTemplate.queryForList("SELECT \"CNAME\",\"ID\",\"STORE_PATH\",\"PUBLISH_TIME\" FROM \"PUB_FILES\" WHERE \"ID\"='"+v_id+"' AND \"BILL_ID\"='"+v_billid+"' ORDER BY \"PUBLISH_TIME\" DESC LIMIT 5 OFFSET 0 ");ret.setSuccess(1);ret.setJson(list);}else{ret.setSuccess(0);ret.setJson("");}return ret;}
}

 需要注意的如下图: 红框里面的代码不能丢了 很重要 不然系统找不到入口.

如果不知道如何创建Springboot项目请阅读如下:

【Java+Springboot】----- 通过Idea快速创建SpringBoot项目操作方法_idea快速开启springboot项目-CSDN博客

相关文章:

【Java+Springboot】------ 通过JDBC+GetMapping方法进行数据select查询、多种方式传参、最简单的基本示例!

一、JDBC如何使用、PostGresql数据库 1、在pom.xml 先引用jdbc组件。 <!--jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency> 2、在pom.xml 再引用p…...

基于单片机光伏太阳能跟踪系统设计

**单片机设计介绍&#xff0c;基于单片机光伏太阳能跟踪系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机光伏太阳能跟踪系统的设计&#xff0c;旨在通过单片机技术实现对光伏太阳能设备的自动跟踪&#xff0c;以提高太阳…...

Stable Diffusion 本地化部署

一、前言 最近在家背八股文背诵得快吐了&#xff0c;烦闷的时候&#xff0c;看到使用 AI 进行作图&#xff0c;可以使用本地话部署。刚好自己家里的电脑&#xff0c;之前买来玩暗黑4&#xff0c;配置相对来说来可以&#xff0c;就拿来试试。 此篇是按照 Github 上的 stable-d…...

C++ Algorithm 常用算法

C <algorithm> 头文件是标准库中提供的一系列算法&#xff0c;用于操作范围&#xff08;range&#xff09;内的元素。这些算法可以用于数组、容器如vector和list&#xff0c;以及其他满足相应迭代器要求的数据结构。以下是一些常用的C <algorithm> 中的算法及其使用…...

线程安全--深入探究线程等待机制和死锁问题

꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转…...

量子计算获重大突破!微软和Quantinuum将量子计算错误率降低800倍,网友:AI算力的希望

量子计算迎来新突破。 近日&#xff0c;微软和量子计算公司Quantinuum宣布&#xff1a;发现了一种新的量子计算系统&#xff0c;可以将传统量子计算的错误率下降800倍&#xff0c;这让高性能量子计算机走进现实更近了一步。 自生成式AI爆发以来&#xff0c;算力是AI发展面临的…...

WordPress 6.5 “里贾纳”已经发布

WordPress 6.5 “里贾纳”已经发布&#xff0c;其灵感来自著名爵士小提琴家Regina Carter的多才多艺。雷吉娜是一位屡获殊荣的艺术家和著名的爵士乐教育家&#xff0c;以超越流派而闻名&#xff0c;她在古典音乐方面的技术基础和对爵士乐的深刻理解为她赢得了大胆超越小提琴所能…...

甲方安全建设之日志采集实操干货

前言 没有永远的安全&#xff0c;如何在被攻击的情况下&#xff0c;快速响应和快速溯源分析攻击动作是个重要的话题。想要分析攻击者做了什么、怎么攻击进来的、还攻击了谁&#xff0c;那么日志是必不可少的一项&#xff0c;因此我们需要尽可能采集多的日志来进行分析攻击者的…...

dm8 开启归档模式

dm8 开启归档模式 1 命令行 [dmdbatest1 dm8]$ disql sysdba/Dameng123localhost:5237服务器[localhost:5237]:处于普通打开状态 登录使用时间 : 3.198(ms) disql V8 SQL> select name,status$,arch_mode from v$database;行号 NAME STATUS$ ARCH_MODE ----------…...

“AI复活”背后的数字永生:被期待成为下一个电商,培育市场认知和用户心智还需时间

“AI复活”背后的数字永生&#xff1a;被期待成为下一个电商&#xff0c;培育市场认知和用户心智还需时间© 由 九派新闻 提供 数字永生&#xff0c;还是电子宠物&#xff1f;过去一个月&#xff0c;因包小柏用AI技术让爱女在数字世界“复活”一事&#xff0c;《流浪地球2…...

基于单片机钢琴电子节拍器系统设计

**单片机设计介绍&#xff0c;基于单片机钢琴电子节拍器系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机钢琴电子节拍器系统设计是一个综合性的项目&#xff0c;它结合了单片机编程、音频处理、用户界面设计等多个领域的…...

我的创作纪念日(year Ⅱ)

大家好&#xff0c;我是Kamen Black 君&#xff0c;今天我与大家简单分享一下我两年来在CSDN的创作历程。 print("祝大家每天快乐&#xff0c;love and peace&#xff01;") 机缘 当初写博客是为了记录一些自己大学中做比赛的心得&#xff0c;没想到自己能走到这一步…...

应急响应实战笔记05Linux实战篇(1)

第1篇&#xff1a;SSH暴力破解 0x00 前言 ​ SSH 是目前较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议&#xff0c;主要用于给远程登录会话数据进行加密&#xff0c;保证数据传输的安全。SSH口令长度太短或者复杂度不够&#xff0c;如仅包含数字&#x…...

重装系统之后,电脑连网卡都没反应怎么办?

前言 有些电脑比较奇葩&#xff0c;安装完成之后会出现网卡连驱动都没有&#xff0c;这时候要安装电脑驱动可是真的烦躁。怎么下手呢&#xff1f; 如果确定电脑的网卡型号还好&#xff0c;直接找个电脑下载个对应的网卡驱动&#xff0c;用U盘复制过去就能安装。 但如果不知道…...

【三十五】【算法分析与设计】综合练习(2),22。 括号生成,77。 组合,494。 目标和,模拟树递归,临时变量自动维护树定义,递归回溯,非树结构模拟树

22. 括号生成 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["&#xff08;&#xff08;&#xff08;&#xff09;&#xff09;&#xff0…...

QT智能指针

一.概述 Qt智能指针是一种能够在不需要手动管理内存的情况下&#xff0c;自动释放资源的指针。它们是C11的std::shared_ptr的一种扩展&#xff0c;可以用于管理Qt对象&#xff0c;尤其是那些不是QObject的对象。 使用智能指针可以避免内存泄露和悬垂指针等问题&#xff0c;同时…...

C++笔记之pkg-config详解,以及g++、gcc编译时使用pkg-config

C++笔记之pkg-config详解,以及g++、gcc编译时使用pkg-config —— 2024-04-05 code review 文章目录 C++笔记之pkg-config详解,以及g++、gcc编译时使用pkg-config1.pkg-config详解`pkg-config` 的基本用法在 `g++`/`gcc` 编译时使用 `pkg-config`注意事项2.示例C++,普通编译…...

[Apple Vision Pro]开源项目 Beautiful Things App Template

1. 技术框架概述&#xff1a; - Beautiful Things App Template是一个为visionOS设计的免费开源软件&#xff08;FOSS&#xff09;&#xff0c;用于展示3D模型画廊。 2. 定位&#xff1a; - 该模板作为Beautiful Things网站的延伸&#xff0c;旨在为Apple Vision Pro用户…...

Qt Remote Objects (QtRO) 笔记

简介 Qt Remote Objects (QtRO) 是 Qt 的一个进程间通信模块。 术语 Source 是指提供服务或提供功能供其他程序使用的对象&#xff0c;是 RPC 中的被调用端。 Replica 是指 Source 对象的代理对象&#xff0c;用于 RPC 中的调用端&#xff0c;对 Replica 的调用请求将被转发…...

Unity类银河恶魔城学习记录12-6.5 p128.5 Create item by Craft源代码

此章节在原视频缺失&#xff0c;此过程为根据源代码推断而来&#xff0c;并非原视频步骤 Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩…...

别再只盯着密钥了!深入ESP32 eFuse,看懂flash加密背后的硬件安全逻辑

别再只盯着密钥了&#xff01;深入ESP32 eFuse&#xff0c;看懂flash加密背后的硬件安全逻辑 当你在ESP32项目中使用flash加密功能时&#xff0c;是否曾疑惑过&#xff1a;为什么简单地烧录几个eFuse位就能实现固件保护&#xff1f;那些看似神秘的DISABLE_DL_DECRYPT、FLASH_CR…...

为 Agent 重新设计的 Git:Cloudflare Artifacts 是什么,怎么工作的

原文&#xff1a;Artifacts: versioned storage that speaks Git 发布时间&#xff1a;2026 年 4 月 16 日 作者&#xff1a;Dillon Mulroy、Matt Carey、Matt Silverlock 一个规模问题 有一个被反复引用的预测&#xff1a;未来 5 年内&#xff0c;人类将写出比过去整个编程历…...

告别Wireshark手动分析:用Python的flowcontainer库5分钟搞定pcap流量特征提取

用Python的flowcontainer库实现pcap流量特征自动化提取 每次面对几十GB的pcap文件时&#xff0c;你是否也厌倦了在Wireshark中反复点击、筛选、导出数据的繁琐操作&#xff1f;网络流量分析是安全研究和数据挖掘的基础工作&#xff0c;但传统的手动分析方法效率低下&#xff0…...

ExplorerPatcher:彻底改造你的Windows界面体验,打造个性化高效工作环境

ExplorerPatcher&#xff1a;彻底改造你的Windows界面体验&#xff0c;打造个性化高效工作环境 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher …...

从理论到落地,一文读懂现代AI Agent的完整记忆流水线

来源&#xff1a;DeepHub IMBA 本文约6500字&#xff0c;建议阅读13分钟本文介绍 AI Agent 四大记忆分类与流水线&#xff0c;解析生产架构、选型方案及常见落地误区。每一次 LLM 调用都是无状态的。模型读上下文窗口&#xff0c;生成响应然后忘掉一切。这对单轮问答没问题。对…...

Davinci vs. 其他开源BI工具(Superset/Metabase)实战对比:我们团队为什么最终选了它?

Davinci vs. 其他开源BI工具实战对比&#xff1a;技术选型的深度思考 在数据驱动决策的时代&#xff0c;企业级BI工具的选择直接影响着数据分析的效率和深度。当我们团队面临开源BI工具选型时&#xff0c;Davinci、Apache Superset和Metabase成为了主要候选对象。经过三个月的实…...

如何让旧款iOS设备重获新生:Legacy-iOS-Kit终极指南

如何让旧款iOS设备重获新生&#xff1a;Legacy-iOS-Kit终极指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit Le…...

STM32CubeMX实战指南:基本定时器中断配置与精准延时应用

1. 认识STM32基本定时器 第一次接触STM32定时器时&#xff0c;我完全被各种类型的定时器搞晕了。直到后来才发现&#xff0c;基本定时器其实是最好上手的。STM32F1系列通常包含TIM6和TIM7两个基本定时器&#xff0c;它们就像电子表里的秒表功能 - 只能计时&#xff0c;没有花哨…...

告别玄学调参:用Python+NumPy手把手复现MIMO信道SVD分解与注水算法

告别玄学调参&#xff1a;用PythonNumPy手把手复现MIMO信道SVD分解与注水算法 在无线通信领域&#xff0c;MIMO&#xff08;多输入多输出&#xff09;技术通过利用空间维度显著提升了系统容量和可靠性。然而&#xff0c;许多工程师在实际应用中常陷入"玄学调参"的困境…...

Cadence AMS Designer 保姆级教程:手把手教你搞定数模混合仿真(含Verilog模块导入避坑指南)

Cadence AMS Designer 保姆级教程&#xff1a;手把手教你搞定数模混合仿真&#xff08;含Verilog模块导入避坑指南&#xff09; 数模混合仿真一直是芯片设计中的关键环节&#xff0c;尤其对于刚接触Cadence环境的新手工程师或在校学生来说&#xff0c;从零开始搭建混合仿真环境…...