MyBatis第三课

目录

回顾 

#和$区别

#(预编译SQL)和$(即时SQL,它是进行的字符串拼接)的区别,其中之一就是预编译SQL和即时SQL的区别

原因:


回顾 

两者的共同点

MaBits可以看作是Java程序和Mysql的沟通桥梁,底层还是(jdbc)

访问数据库还得是Mysql

多表查询(慢)

1.通常情况下,数据库集群是很多项目一起使用的,当出现慢查询的时候,会影响整个集群,也就是会影响所有使用该集群的项目

2.JAVA服务器扩容更方便

数据库集群扩容需要DBA处理

Mybatis

并不关注你的多表查询还是单表查询,他更主要的是把数据库的映射到JAVA对象中。

#和$区别

假如用

下面是不加引号报的错

不能使用#的情况

1.如果是排序的时候,传递asc还是desc的时候,假如asc会给参数加上''

有#他的传递过来的asc就会多加一个引号,从而报错 

下面是使用$的结果,可以看到正常运行。

2.假如生活中,使用模糊查询的时候

使用#

使用$符号就会可以使用

$存在的漏斗 SQL注入(面试题)

什么叫SQL注入呢:

通过操作输入的数据来修改事先先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。

我的个人理解,假如王者荣耀输入用户id,本来他的id是传递字符型之类的,这时候,你加入个引号啥的比如说 

xxx‘里面是你的王者荣耀名字’,这个时候你在里面写了‘我是帅哥’,那么这样,他的两个引号,就会先遇上,也就是说xxx''我是帅哥'‘,此时两个引号靠近,那么就是让数据库误解,误认为你的那个'是语句结束的标志。

$符号报错

#符号不发生报错,正常运行

#(预编译SQL)和$(即时SQL,它是进行的字符串拼接)的区别,其中之一就是预编译SQL和即时SQL的区别

1.预编译SQL性能更高

2.预编译SQL不存在SQL注入的问题

排序的时候不可以使用#

表名,字段名等作为参数时,也不能使用#

模糊查询,如果使用#,需要搭配mysql的内置函数concat,而不能直接使用。

实际生活中,能用#都用#,不能用等时候再用$(要考虑SQL注入这个问题)

原因:

SQL执行

1.语法解析

2.SQL优化(但是这个是服务器的对他本身的优化,不是程序员:加索引的优化方式)

预编译SQL:编译一次之后,会将编译后的SQL语句缓存起来,后面再去执行这条语句的时候,不会再次编译,省去了解析优化的过程,以此提高效率

3.SQL执行

数据库连接池

数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。

国内中比较流行的Hikari,Druid(ALibaba)

公司内部会告诉你到时候,了解即可

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

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

相关文章

VMware workstation安装debian-12.1.0虚拟机(最小化安装)并配置网络

VMware workstation安装debian-12.1.0虚拟机(最小化安装)并配置网络 Debian 是一个完全自由的操作系统!Debian 有一个由普罗大众组成的社区!该文档适用于在VMware workstation平台安装最小化安装debian-12.1.0虚拟机。 1.安装准…

Linux Ubuntu搭建我的世界Minecraft服务器实现好友远程联机MC游戏

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 前言 Li…

制造领域 基础概念快速入门介绍

1、基本背景知识 本定义结合国家标准文件有所发挥,仅供参考。 产品:是生产企业向用户或市场以商品形式提供的制成品; 成套设备:在生产企业一般不用装配工序连接,但用于完成相互联系的使用功能的两个或两个以上的产…

【快速解决】保姆级Anaconda安装教程

目录 第一步 ​编辑第二步 ​编辑第三步 第四步 第五步 第六步 ​编辑 第七步 第八步 第九步 第一步 在anaconda清华大学开源软件镜像站下载anaconda。点击这里进入 我这里选的是windows-x86_64。 第二步 下载好以后进行安装 第三步 第四步 第五步 选择…

SpringBoot集成Skywalking实现分布式链路追踪

官方网址: Apache SkyWalking官方文档: SkyWalking 极简入门 | Apache SkyWalking下载地址:Downloads | Apache SkyWalking Agent:以探针的方式进行请求链路的数据采集,并向管理服务上报; OAP-Service&am…

一文带你了解注册信息安全专业人员CISP

CISP即"注册信息安全专业人员",系国家对信息安全人员资质的最高认可。英文为Certified Information Security Professional (简称CISP),CISP系经中国信息安全测评中心实施国家认证。 CISP证书涵盖方向: “注册信息安全工程师”&a…

kafka之java客户端实战

1. kafka的客户端 Kafka提供了两套客户端API,HighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细节,使用起来比较简单,是企业开发过程中最常用的客户端API。 而LowLevel API则需要客户端自己管理Kafka的运行细节,Pa…

Manjora 中使用idm,linux通用

说明 在Mnajora中的idm需要在wine中运行,idm是一款很不错的下载工具,但是在linux不能直接使用,借助wine也无法使用浏览器的集成插件,在网上偶然发现一款第三方插件能够在linux的浏览器中将链接捕捉到idm中,虽然使用起…

git安装教程 Windows 附安装包链接

Git是一款分布式源代码管理工具(版本控制工具) 。 git的作用 当你需要做一个大工程的时候,文件的管理无疑是非常庞大的工作,因为你需要不断的修改更新文件内容,同时可能还要保留旧版本保证可以复原,这样就需要备份多个版本的文件…

计网期末复习(一)

计网期末复习(一) – WhiteNights Site 标签:计算机网络 诶,期末。诶,复习。 TCP/IP参考模型的网络层提供的是? 区别于传输层,网络层提供不可靠无连接的数据报服务 当时看到TCP/IP就选了可靠有…

RT-Thread学习(一)简介及基础环境配置

系列文章目录 文章目录 系列文章目录前言简要介绍配置环境修改工作时钟更改ROM空间添加FinSH串口命令提示 前言 之前学习了FreeRTOS,但是一直想深入学习,但是没有人指导,又不知道该如何学习,于是再学习一个操作系统看看情况。 简…

Docker安装Odoo17

Docker安装Odoo 前言所需环境安装步骤登录Odoo 配置数据库 前言 Odoo是一个开源的ERP框架,它提供了一套完整的、可定制的、模块化的企业管理软件解决方案。以下是Odoo的主要特点: 模块化设计:Odoo的各个功能都以模块的形式提供,包…

机器视觉系统选型-参数—景深

镜头在垂直方向上,能清晰成像的空间距离(清晰成像范围),称为景深

【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》

【现代密码学】笔记7-- CCA安全与认证加密《introduction to modern cryphtography》 写在最前面7 CCA安全与认证加密 写在最前面 主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。 内容补充:骆婷老师的PPT 《introduction to modern cryphtography》…

mysql数据库被黑恢复—应用层面delete删除---惜分飞

客户的mysql被人从应用层面攻击,并且删除了一些数据,导致业务无法正常使用,通过底层分析binlog确认类似恢复操作 确认这类的业务破坏是通过delete操作实现的,客户那边不太幸,客户找了多人进行恢复,现场严重破坏,老库被删除,并且还原了历史的备份文件(非故障第一现场),通过底层…

Error: error:0308010C:digital envelope routines::unsupported的解决方案

因为最近安装了pnpm对node版本有要求,升级了node版本是18以后,在运行之前的项目,就跑不起来了,报错如下: Error: error:0308010C:digital envelope routines::unsupported解决方案一: node版本切换到16版…

KEI5许可证没到期,编译却出现Error: C9555E: Failed to check out a license.问题解决

一、编译出现如下报错 二、检查一下许可证 三、许可证在许可日期内,故应该不是许可证的问题 四、检查一下编译器,我用的是这个,这几个编译器的区别其实我不太明白,但我把问题解决是选的这个 五、找到编译器的路径,去复…

Dockerfile的COPY --link

文章目录 总结环境概述“ --link” 是什么引入“ --link”使用“COPY --link”示例什么情况不适用总结参考 注:我做了很多测试,发现不管是否使用 --link ,结果貌似都一样。我在网上搜了半天,最后发现,该功能貌似目前被…

SpringCloud:Ribbon

文章目录 Ribbon快速入门Ribbon负载均衡算法常见的负载均衡算法更改算法规则修改配置 饥饿加载 Ribbon ribbon是一个客户端负载均衡器,会从注册中心拉取可用服务,当客户端需要获取服务请求时,ribbon能够解析服务地址并实现负载均衡 快速入门 …

理解TCP/IP协议

一、协议 在计算机网络与信息通讯领域里,人们经常提及 “协议” 一词。互联网中常用的协议有HTTP、TCP、IP等。 协议的必要性 简单来说,协议就是计算机与计算机之间通过网络通信时,事先达成的一种 “约定”。这种“约定”使不同厂商的设备…