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

JDBC之ORM思想及SQL注入

目录

一. ORM编程思想

1. 简介

2. 实操ORM思想

a. Students实体类

b. ORM映射

二. SQL注入

1. 简介

2. 解决SQL注入

三. 总结


前言

本文来讲解ORM编程思想和SQL注入,旨在帮助大家更容易的理解和掌握

个人主页:艺杯羹

系列专栏:JDBC

一. ORM编程思想

1. 简介

这是一种思想,对象关系映射(英语:Object Relational Mapping,简称ORM,或O/R mapping)是一种为了解决面向对象语言与关系数据库存在的互不匹配的现象

这个思想就是要求:

  1. 表与所创建的类要对应
  2. 表的一个字段和类中一个属性一一对应
  3. 表的一行数据和类的一个对象对应

实体类

实体类就是一个定义了属性,拥有getter、setter、无参构造方法(基本必备)的一个类。实体类可以在数据传输过程中对数据进行封装,相当于一个“工具”、“容器”、“载体”,能存储、传输数据,能管理数据

特点分类具体描述
类名实体类名尽量和数据库中的表名一一对应
属性与字段实体类中的属性对应数据库表中的字段,相关的命名最好也一一对应
方法实体类内方法主要有 getter、setter 方法,用于设置、获取数据
访问修饰符实体类属性一般为 private 类型,方法为 public 类型
构造方法实体类应该有无参、有参构造方法

关系图如下:

2. 实操ORM思想

a. Students实体类

// 实体类,存放Users表中的数据
public class Students {private int studentid;private String studentname;private int studentage;public int getStudentid() {return studentid;}public void setStudentid(int studentid) {this.studentid = studentid;}public String getStudentname() {return studentname;}public void setStudentname(String studentname) {this.studentname = studentname;}public int getStudentage() {return studentage;}public void setStudentage(int studentage) {this.studentage = studentage;}
}

b. ORM映射

public List<Students> selectAllStu(){Connection connection = null;PreparedStatement ps = null;ResultSet rs = null;List<Students> list = new ArrayList<>();try{// 获取数据库连接connection = JdbcUtils.getConnection();// 创建PreparedStatement对象ps = connection.prepareStatement("select * from students");// 执行查询rs = ps.executeQuery();// 操作ResultSet对象获取查询的结果集while(rs.next()){// 获取列中的数据int studentid = rs.getInt("studentid");String studentname = rs.getString("studentname");int studentage = rs.getInt("studentage");// ORM映射处理Students student = new Students();student.setStudentid(studentid);student.setStudentname(studentname);student.setStudentage(studentage);list.add(student);}}catch (Exception e){e.printStackTrace();}return list;}

测试

ResultSetTest tst = new ResultSetTest();
List<Students> students = tst.selectAllStu();
for(Students student : students){
System.out.println(student.getStudentid()+" "+student.getStudentname()+" "+student.getStudentage());
}

 

二. SQL注入

1. 简介

所谓 SQL 注入,就是通过把含有 SQL 语句片段的参数插入到需要执行的 SQL 语句中,
最终达到欺骗数据库服务器执行恶意操作的 SQL 命令

这种情况会导致数据泄露的风险,如果是登录账号,被使用sql注入攻击,那么就会导致数据泄露
这里我那statement来举个例子

这是一个用户登录查询的sql语句

// 在Statement里
String sql = 
"SELECT * FROM users WHERE username = '"+username+"' AND password = '"+password+"'"

如果攻击者,输入如下内容
' OR '1'='1' --
那么就会有数据泄露的风险,为什么?现在我们看看源代码

// 这里的意思就变成名字是一直都是为真的
// 并且后面使用 -- 这个符号将密码注释掉了
// 这样就出现了SQL注入
SELECT * FROM users WHERE username = '' OR '1'='1' --' AND password = '任意值';

2. 解决SQL注入

就像之前的文章提到的,为什么使用Statement会出现SQL注入,就是这个原因
如何去解决呢,就是用PrepareStatement
因为prepareStatement会先用?来占位,就能够防止SQL注入

三. 总结

到此,就讲解完了ORM编程思想和SQL注入,相信你能够很好的理解了
希望本文能够帮助到你😊

相关文章:

JDBC之ORM思想及SQL注入

目录 一. ORM编程思想 1. 简介 2. 实操ORM思想 a. Students实体类 b. ORM映射 二. SQL注入 1. 简介 2. 解决SQL注入 三. 总结 前言 本文来讲解ORM编程思想和SQL注入&#xff0c;旨在帮助大家更容易的理解和掌握 个人主页&#xff1a;艺杯羹 系列专栏&#xff1a;JDBC …...

UniApp学习笔记

在uniapp中使用View标签来代替div标签&#xff0c;使用rpx来取代px&#xff0c;rpx动态适配屏幕宽度750rpx100vw H5端不支持*的css选择器 body的元素选择器请改为page div和ul和li等改为view、 span和font改为text a改为navigator img改为image scoped:非H5端默认并未启…...

统计术语学习

基期、现期 作为对比参照的时期称为基期&#xff0c;而相对于基期的称为现期。 描述具体数值时我们称之为基期量和现期量。 【例 1】2017 年比 2016 年第三产业 GDP 增长 6.8%&#xff0c; &#xff08;2016&#xff09;为基期&#xff0c;&#xff08;2017&#xff09; 为现…...

认识 Linux 内存构成:Linux 内存调优之页表、TLB、缺页异常、大页认知

写在前面 博文内容涉及 Linux 内存中 多级页表,缺页异常,TLB,以及大页相关基本认知理解不足小伙伴帮忙指正对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是…...

Java File 类的常用方法详解

Java File 类的常用方法详解 File 类是 Java 中用于操作文件和目录的核心类&#xff0c;位于 java.io 包。它提供了丰富的方法来管理文件系统&#xff0c;包括创建、删除、重命名、查询属性、遍历目录等操作。 1. 构造方法 File 类提供多种构造方法&#xff0c;用于创建文件或…...

【AIGC】基础篇:VS Code 配置 Python 命令行参数调试debug超详细教程

文章目录 前言一、安装必要的扩展二、安装 debugpy三、创建 launch.json 配置文件四、配置调试环境五、开始调试六、命令行调试七、远程调试八、调试技巧九、常见问题及解决方法 前言 在 Python 开发过程中&#xff0c;调试是必不可少的环节。VS Code 提供了强大的调试功能&am…...

【金仓数据库征文】金仓数据库KingbaseES:千行百业国产化征程中的璀璨之星

&#x1f381;个人主页&#xff1a;User_芊芊君子 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 &#x1f50d;系列专栏&#xff1a;AI 【引言】 在数字化转型浪潮奔涌向前的时代&#xff0c;数据库作为数据存储与管理的核心枢纽&#xff0c;其重要性不…...

Linux进程学习【基本认知】

&#x1f33c;&#x1f33c;前言&#xff1a;前言理解冯诺依曼体系结构与操作系统原理 在计算机科学的基础理论中&#xff0c;冯诺依曼体系结构和操作系统是两个关键概念&#xff0c;它们共同构成了现代计算机的运行基础。本文将从这两个方面入手&#xff0c;简要讲解它们的基本…...

电子工厂POE交换机端口数量选择与部署策略

引言 在电子工厂的智能化升级过程中&#xff0c;POE&#xff08;Power over Ethernet&#xff09;交换机凭借其“供电数据传输”一体化功能&#xff0c;成为构建工业物联网的核心设备。与传统工业交换机相比&#xff0c;POE交换机通过单根网线实现设备供电与数据交互&#xff…...

Codeforces Round 1020 (Div. 3) A-D

A. Dr. TC https://codeforces.com/contest/2106/problem/A 题目大意&#xff1a; 对输入字符串每个位置字符依次翻转&#xff08;1->0 , 0->1) 比如: 101 001 翻转位置1 111 2 100 3 题解&#xff1a; 观察数学特征&#xff1a;ansn…...

电子病历高质量语料库构建方法与架构项目(提示词设计篇)

电子病历人工智能提示词工程是医疗AI应用中的关键技术环节,它直接影响大语言模型在医疗场景下的输出质量和可靠性。随着大语言模型在电子病历生成、质控、数据提取等领域的广泛应用,如何通过编程实现高效、精准的提示词工程成为医疗信息化建设的重要课题。本文将系统介绍电子…...

蓝桥杯 4. 卡片换位

卡片换位 原题目链接 题目描述 你玩过华容道的游戏吗&#xff1f; 这是一个类似的&#xff0c;但更简单的游戏。 看下面的 3 2 格子&#xff1a; --------- | A | * | * | --------- | B | | * | ---------在其中放置了 5 张牌&#xff0c;其中&#xff1a; A 表示关…...

用python进行OCR识别

原文链接&#xff1a;https://www.bilibili.com/opus/1036675560501149699 我担心原作者删除&#xff0c;所以重新拷贝了一遍 1.下载tesseract 链接&#xff1a;https://github.com/UB-Mannheim/tesseract/wiki 这里示例安装最新版本 点击下载tesseract安装包 2.安装tess…...

【大语言模型】大语言模型(LLMs)在工业缺陷检测领域的应用

大语言模型&#xff08;LLMs&#xff09;在工业缺陷检测领域的应用场景正在快速扩展&#xff0c;结合其多模态理解、文本生成和逻辑推理能力&#xff0c;为传统检测方法提供了新的技术路径。以下是该领域的主要应用场景及相关技术进展&#xff1a; 1. 多模态缺陷检测与解释 视…...

202531读书笔记|《天上大风:良宽俳句·短歌·汉诗400》——我别无他物款待君,除了山中冬日寂寥,陶然共一醉,不知是与非,一饱百情足,一酣万事休

202531读书笔记|《天上大风&#xff1a;良宽俳句短歌汉诗400》——我别无他物款待君&#xff0c;除了山中冬日寂寥&#xff0c;陶然共一醉&#xff0c;不知是与非&#xff0c;一饱百情足&#xff0c;一酣万事休 《天上大风&#xff1a;良宽俳句短歌汉诗400》良宽是公认与松尾芭…...

HTMLCSS模板实现水滴动画效果

.container 类&#xff1a;定义了页面的容器样式。 display: flex&#xff1a;使容器成为弹性容器&#xff0c;方便对其子元素进行布局。justify-content: center 和 align-items: center&#xff1a;分别使子元素在水平和垂直方向上居中对齐。min-height: 100vh&#xff1a;设…...

Python爬虫(5)静态页面抓取实战:requests库请求头配置与反反爬策略详解

目录 一、背景与需求‌二、静态页面抓取的核心流程‌三、requests库基础与请求头配置‌3.1 安装与基本请求3.2 请求头核心参数解析‌3.3 自定义请求头实战 四、实战案例&#xff1a;抓取豆瓣读书Top250‌1. 目标‌2. 代码实现3. 技术要点‌ 五、高阶技巧与反反爬策略‌5.1 动态…...

电子病历高质量语料库构建方法与架构项目(数据遗忘篇)

引言 在人工智能与医疗健康的深度融合时代,医疗数据的价值与风险并存。跨机构和平台的医疗数据共享对于推动医学研究、提高诊断精度和实现个性化治疗至关重要,但同时也带来了前所未有的隐私挑战。先进的AI技术可以从理论上去标识化的医疗扫描中重新识别个人身份,例如从MRI数…...

需求开发向设计规划的转化-从需求到设计和编码

需求和设计之间存在差别&#xff0c;但尽量使你的规格说明的具体实现无倾向性。理想情况是&#xff1a;在设计上的考虑不应该歪曲对预期系统的描述&#xff08; Jackson 1995&#xff09;。需求开发和规格说明应该强调对预期系统外部行为的理解和描述。让设计者和开发者参与需求…...

browser-use:AI驱动的浏览器自动化工具使用指南

AI驱动浏览器自动化 browser-use下载项目创建Python环境安装依赖配置环境运行WebUI简单使用Deep Research使用本地浏览器免登录 browser-use browser-use是一个基于 Python 的开源库&#xff0c;旨在简化 AI 代理与浏览器之间的交互。它将先进的AI功能与强大的浏览器自动化功能…...

Java从入门到“放弃”(精通)之旅——JavaSE终篇(异常)

Java从入门到“放弃”&#xff08;精通&#xff09;之旅&#x1f680;——JavaSE终篇&#xff08;异常&#xff09; 一、异常的概念与体系结构 1.1 什么是异常&#xff1f; 在生活中&#xff0c;当一个人表情痛苦时&#xff0c;我们可能会关心地问&#xff1a;"你是不是生…...

TCP协议理解

文章目录 TCP协议理解理论基础TCP首部结构图示字段逐项解析 TCP是面向连接&#xff08;Connection-Oriented&#xff09;面向连接的核心表现TCP 面向连接的核心特性TCP 与UDP对比 TCP是一个可靠的(reliable)序号与确认机制&#xff08;Sequencing & Acknowledgment&#xf…...

NS3-虚拟网络与物理网络的交互-1 仿真概述

NS3-虚拟网络与物理网络的交互-1 仿真概述 目录 1. 仿真概述1.1 Testbed 仿真示例-FdNetDevice1.2 模拟通道示例-TapDevice 1. 仿真概述 NS-3 专为集成到 TestBed 和虚拟机中而设计 环境。我们通过提供两种网络设备来满足这一需求。 第一种设备是文件描述符 net 设备 &#x…...

晶振老化:不可忽视的隐患与预防策略

在电子设备的世界里&#xff0c;晶振如同精准的时钟&#xff0c;为电路系统提供稳定的频率信号。然而&#xff0c;随着时间推移&#xff0c;晶振会不可避免地出现老化现象。这个看似细微的变化&#xff0c;却可能引发设备性能下降、数据传输错误等一系列问题。晶振老化究竟藏着…...

企业为何要禁止“片断引用开源软件代码”?一文看透!

开篇故事&#xff1a;一段“开源代码”引发的百亿级灾难 某电商平台为快速上线新功能&#xff0c;从GitHub复制了一段“高性能加密算法”代码到支付系统中。 半年后&#xff0c;黑客通过该代码中的隐藏后门&#xff0c;盗取百万用户信用卡信息。 事后调查&#xff1a;这段代…...

测试模版x

本篇技术博文摘要 &#x1f31f; 引言 &#x1f4d8; 在这个变幻莫测、快速发展的技术时代&#xff0c;与时俱进是每个IT工程师的必修课。我是盛透侧视攻城狮&#xff0c;一名什么都会一丢丢的网络安全工程师&#xff0c;也是众多技术社区的活跃成员以及多家大厂官方认可人员&a…...

deepseek-r1-671B满血版,全栈式智能创作平台 - 多模态大模型赋能未来创作

引领AI创作新纪元 比象AI全栈式智能创作平台是基于全球领先的多模态大模型技术构建的新一代AI创作引擎&#xff0c;集成了前沿的BeyondLM-7B认知计算框架、BeyondDiffusion-XL视觉生成系统和BeyondSynth音视频合成技术&#xff0c;打造从内容构思到成品输出的完整智能创作闭环…...

Promethues 普罗米修斯

Prometheus 并非传统意义上的数据库&#xff0c;而是一个开源的系统监控和报警工具包&#xff0c;但它的核心组件之一是时间序列数据库&#xff0c;用于存储监控指标数据。以下是对 Prometheus 及其时间序列数据库功能的详细介绍&#xff1a; 1. Prometheus 概述 目标定位&a…...

Web 服务架构与技术组件概述

目录 web服务流程图 Web 服务流程图描述了客户端与服务器之间的交互。首先&#xff0c;用户通过浏览器发送请求到 Web 服务器。如果请求的是静态资源&#xff08;如 HTML、CSS、图片&#xff09;&#xff0c;Web 服务器直接返回响应&#xff1b;如果是动态资源&#xff0c;We…...

华硕NUC产品闪耀第31届中国国际广播电视信息网络展览会

2025年4月22日&#xff0c;第31届中国国际广播电视信息网络展览会在北京国家会议中心盛大开幕。作为一年一度的行业盛会&#xff0c;展会汇聚了来自全球各地的顶尖技术与设备厂商。在这片科技与创新交织的海洋中&#xff0c;华硕NUC以其卓越性能、小巧体积和创新技术十分引人注…...

Matplotlib高阶技术全景解析(续):动态交互、三维可视化与性能优化

目录 ​编辑 一、动态可视化&#xff1a;实时数据流与动画生成 1. 实时数据流可视化 2. 复杂动画控制 二、三维可视化&#xff1a;科学计算与工程建模 1. 基础三维绘图 2. 高级三维渲染优化 三、交互式可视化&#xff1a;GUI集成与Web部署 1. Tkinter/PyQt嵌入式开发 …...

[DDD传灯录]禅师:这,就是领域驱动设计(01-02)

用《软件方法》引领AI全流程开发-5月12-14日第3期 领域驱动设计是革命性的创造&#xff0c;是划时代的洞见&#xff0c;是解决业务领域用户需求技术系统功能逻辑架构分析设计复杂性的敏捷精益方法学。 这一切的根源&#xff0c;归结于领域驱动设计蕴含丰富的佛学思想。佛学是所…...

0基础 | Proteus仿真 | 51单片机 | 继电器

继电器---RELAY 本次选择一款5v一路继电器进行讲解 信号输入 IN1输入高电平&#xff0c;三极管导通&#xff0c;LED1点亮&#xff0c;电磁铁12接通吸引3向下与4接通&#xff0c;J1A的12接通 IN1输入低电平&#xff0c;则J1A的23接通 产品引脚定义及功能 序号 引脚符号 引脚…...

鸿蒙应用开发证书考试的一点想法

一、介绍&#xff1a; 直接上图 二、体验后的想法&#xff1a; 1.知识点在指南API参考最佳实践里面找 2.没有明确说明考试不能查第1点的文档&#xff0c;但是考试只有1个小时&#xff0c;合理分配时间 3.切屏三次后自动提交要注意&#xff0c;每月3次机会下月又有3次机会&a…...

MiniMind模型的web交互功能初试

MiniMind模型的web交互功能初试 一、前言 MiniMind提供了基于streamlit的web交互功能&#xff0c;能够即时切换模型和修改相关参数&#xff0c;经初步测试&#xff0c;具有比较好的体验感。本文介绍了使用MiniMind使用web交互功能的方法&#xff0c;并对使用中出现的问题给出…...

手把手玩转 JSON:快递包裹式思维拆箱装箱,Python / Java / Scala 全景实战指南

在日常开发中&#xff0c;JSON 就像全栈程序员口袋里那把万用螺丝刀——既轻便又几乎无处不在。本文面向初学者和中级读者&#xff0c;用“快递包裹”与“便签盒子”的比喻&#xff0c;结合 Python / Java / Scala 三语种示例&#xff0c;带你从概念、语法到实战全面掌握 JSON。…...

HFSS5(李明洋)——设置激励(波端口激励)

Magnetic是适用于铁磁氧导体的,只有前三种激励类型可以用于计算S参数 1波端口激励 也可以设置在模型内部,如果是设置在模型内部必须加一段理想导体,用于指定端口方向 1.1——模式 number 输入N:计算1-N的模式都计算 1.2——模式校准 计算端口特征阻抗有三种方式:Zpi、…...

NVIDIA --- 端到端自动驾驶

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、传统驾驶模型二、NVIDIA的端到端驾驶模型1.基本模型2.自查讯向量3.通用框架 总结 前言 端到端自动驾驶指的是系统接收来自摄像头雷达和激光雷达的原始传感…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(11): てあります。

日语学习-日语知识点小记-构建基础-JLPT-N4阶段&#xff08;11&#xff09;&#xff1a; てあります。 1、前言&#xff08;1&#xff09;情况说明&#xff08;2&#xff09;工程师的信仰 2、知识点&#xff08;1&#xff09;てあります。&#xff08;&#xff12;&#xff09;…...

【前端】如何检查内存泄漏

在实际的场景中&#xff0c;如果观察到内存持续出现峰值&#xff0c;并且内存消耗一直没有减少&#xff0c;那可能存在内存泄漏。 使用 Chrome DevTools 来识别内存图和一些内存泄漏&#xff0c;我们需要关注以下两个方面&#xff1a; ● 使用性能分析器可视化内存消耗&#xf…...

【多线程】四、死锁

文章目录 Ⅰ. 死锁的概念Ⅱ. 死锁的四个必要条件Ⅲ. 避免死锁的方案Ⅳ. 避免死锁的算法Ⅰ. 死锁的概念 ​ 死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所占用不会释放的资源而处于的一种永久等待状态。 ​ 通常,死锁发生在多个进程同时需要…...

【现代深度学习技术】循环神经网络06:循环神经网络的简洁实现

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

Video-LLaVA

一、研究背景与现有方法局限性 在多模态大语言模型(LVLMs)的发展中,现有方法面临两大核心挑战。其一为单一模态处理的局限,多数 LVLMs 仅能处理图像 - 语言或视频 - 语言等单一视觉模态,难以在统一框架下高效整合多种视觉输入。其二为统一表示的困难,尽管部分研究尝试通过…...

firewalld 详解

firewalld 详解 firewalld 是 Linux 系统中一个动态防火墙管理工具&#xff0c;取代了传统的 iptables&#xff0c;提供更灵活、动态的规则配置&#xff0c;支持运行时修改且无需重载服务。以下是其核心概念、常用操作及示例指南&#xff1a; 一、核心概念 区域&#xff08;Zo…...

QuecPython+USBNET:实现USB网卡功能

USBNET 概述 USBNET&#xff08;USB Networking&#xff09; 是一种通过 USB 接口 实现网络通信的技术&#xff0c;允许设备通过 USB 连接模拟以太网&#xff08;Ethernet over USB&#xff09;或直接进行网络数据传输。它广泛应用于嵌入式设备、工业控制、虚拟机和便携式设备…...

百度搜索AI开放计划:助力开发者通过MCP Server连接用户和应用

百度搜索AI开放计划&#xff1a;助力开发者通过MCP Server连接用户和应用 一、背景 2025年4月25日&#xff0c;百度在Create开发者大会上发布了全新的AI开放计划。这一计划的核心目的是实现用户和AI应用、MCP Server的高效链接&#xff0c;提供更流畅的互动体验&#xff0c;推…...

一文带你了解单例模式及其逐步优化~

单例模式 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。 使用场景&#xff1a; 需要频繁创建和销毁的对象 创建对象时耗时过多或资源消耗过大 工具类对象&#xff08;无状态的工具类&#xff09; 访问…...

【金仓数据库征文】-不懂数据库也能看懂!一文解析金仓技术介绍以典型应用

目录 一、主角登场 没有数据库&#xff0c;你的生活可能会 “乱套” 国产数据库之金仓 KingbaseES 金仓数据库凭啥 “C 位出道”&#xff1f; 二、金仓数据库产品核心解析 企业级数据库 “全能选手” 巧妙的 “内部协作” 按需选择的版本 四、生态联合解决方案深度探索…...

什么是视频上墙

视频联动上墙是指当监控系统中出现报警或其他特定事件时&#xff0c;相关的视频画面能够自动切换并显示在指定的监控大屏或显示设备上&#xff0c;以便监控人员能够快速、直观地查看事件现场的情况&#xff0c;及时做出响应和处理。 具体介绍• 系统组成 &#xff1a;一般由前端…...

C++初登门槛

多态 一、概念 多态是指不同对象对同一消息产生不同响应的行为。例如&#xff0c;蓝牙、4G、Wi-Fi 对“发送数据”指令有不同的具体实现。 二、核心理解 本质&#xff1a;通过基类指针或引用操作子类对象&#xff0c;实现运行时动态绑定。 表现形式&#xff1a; 接口统一&a…...