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

做百度推广和企业网站那个有效果吗网站建设沧州

做百度推广和企业网站那个有效果吗,网站建设沧州,微信小程序研发,做校园网站 怎么备案键盘敲烂,年薪30万🌈 目录 一、SQL的预编译 📕一条SQL语句的执行过程 📕弊端 📕预编译SQL的优势 📕两种参数占位符 📕小结 二、动态SQL 📕概念介绍: &#x1f4…

键盘敲烂,年薪30万🌈

目录

一、SQL的预编译

📕一条SQL语句的执行过程

📕弊端

📕预编译SQL的优势

📕两种参数占位符

📕小结

二、动态SQL

📕概念介绍:

📕案例:

📕动态SQL语句:

📕应用场景总结:

三、总结:


一、SQL的预编译

📕一条SQL语句的执行过程

📕弊端
  • 3条SQL语句都是删除操作,但是经过语法解析,优化,编译会生成3条不同的SQL语句,降低性能也浪费空间。
delete from emp where id = 1;  
delete from emp where id = 2;
delete from emp where id = 3;
//优化后执行3条不同的SQL语句

📕预编译SQL的优势
  • 使用参数占位符#{}替代
  • 预编译生成的SQL语句相同,故第二次、第三次,省去了解析和优化过程,提高性能
delete from emp where id = #{id};
-- 预编译后的SQL语句
delete from emp where id = ?;

预编译可防止SQL注入

下面是一个登户登录的校验,当你输入用户名和密码,点击登录,信息传到服务器,服务器端会从User表中查询有无该用户,以下是两种SQL语句的差别。

-- 用户登录校验
select username, password from user where username='张三' and password='123'-- 普通语句
select username, password from user where username='saggd' and password='' or '1'='1';-- 预编译SQL安全
select username, password from user where username=? ans password=?;

小结:

普通语句编译后会将参数以字符串的形式拼接到SQL语句中,这就造成了语句的恒成立

预编译SQL编译后将参数整体视为一个字符串,当语句开始执行时,才进行替换

📕两种参数占位符

#{}

  • 执行SQL时,会将#{…}替换为?,生成预编译SQL,会自动设置参数值。
  • 使用时机:参数传递,都使用#{…}

${}

  • 拼接SQL。直接将参数拼接在SQL语句中,存在SQL注入问题。
  • 使用时机:如果对表名、列表进行动态设置时使用。

📕小结

预编译SQL利用参数占位符编译生成的SQL语句相同,性能高效

可防止SQL注入

二、动态SQL

📕概念介绍:

随着用户的输入或外部条件的变化而变化的SQL语句,我们称为 动态SQL

📕案例:

📕动态SQL语句:

<if>用于判断条件是否成立。使用test属性进行条件判断,如果条件为true,则拼接SQL。

用法:test属性为if的判断条件

实现:例如动态sql实现条件查询

    <!--    动态sql - if--><select id="select" resultType="com.itpan.pojo.Emp">select *from emp<where><if test="name != null">name like concat('%', #{name}, '%')</if><if test="gender != null">and gender = #{gender}</if><if test="begin != null and end != null">and entrydate between #{begin} and #{end}</if></where>order by update_time desc</select>

注意:

如果name字段为空,sql语句为select * from emp where and gender = #{gemder}……

引入<where></where>标签:

where 元素只会在子元素有内容的情况下才插入where子句。而且会自动去除子句的开头的AND 或OR

同理update时也要引入<set></set>标签去除多余 ,

<foreach>遍历集合或数组给字段赋值

属性介绍 :

  • collection:集合或数组名
  • item:要分割的字段名
  • separator:每次遍历的分隔符
  • open:遍历开始前拼接的片段
  • close:遍历开始后拼接的片段

实现:例如实现批量删除

<!--    批量删除元素-->
<!--    ids是List<Integer>集合><delete id="deleteById">delete from emp where id in<foreach collection="ids" item="id" separator="," open="(" close=")">#{id}</foreach></delete>

<sql>与<include>

  •  <sql>定义可重用的 SQL 段。
  • <include>通过属性refid,指定包含的sql片段。

📕应用场景总结:

<if>

  • 用于判断条件是否成立,如果条件为true,则拼接SQL
  • 形式:<if test="name != null">…</if>

<where>

  • where 元素只会在子元素有内容的情况下才插入where子句,而且会自动去除子句的开头的AND OR

<set>

  • 动态地在行首插入 SET 关键字,并会删掉额外的逗号。(用在update语句中)

<foreach>

  • 遍历集合或数组给字段赋值
  • 形式<foreach collection=集合或数组名 item=字段名 separator="," open="(" close=")">

<sql><include>

  • sql封装相同代码 include引入

三、总结:

🌈 动态SQL是重点,也是我们开发中最为常用的SQL语句

🌈 #{} 与 ${}占位符有什么区别 -> 大厂面试题

🌈 预编译SQL的优势

http://www.yayakq.cn/news/497727/

相关文章:

  • 世界摄影网站二级建造师执业资格考试
  • 视频网站建设技术方案书天津建设工程信息网怎么投标
  • 天津网站建设有哪些小语种网站开发
  • 苏州吴江网站建设济南网站制做
  • 国内wordpress著名网站莱芜网逃人员
  • 微信后台怎么做微网站衡水医院网站建设
  • 优秀网站设计的标准山西网站备案
  • 韶关市建设局官方网站重庆如何快速制作一个网站
  • 学校网站开发协议网站开发融资
  • 怎样用linux做网站网页链接调用服务是干嘛的
  • 试用网站开发网站建设开始学什么
  • 重庆忠县网站建设公司哪里有wordpress 到顶插件
  • 专业制作网站建设亿网互联
  • 知行网站建设wordpress文章转发
  • 网站建设与开发的论文营销型网站框架图
  • 网站开发pc和手机端湖南做网站问磐石网络专业
  • 做网站的开发环境无锡产品排名优化
  • 网站设计项目明细机械网站案例
  • 招商网站建设地点西杰网站建设
  • 做网站诊断wordpress 订阅号 采集
  • 网站开发系统绿色版网站建设对电子商务中的作用
  • 网站推广公司排名点击查看住房和城乡建设部网站八大员
  • 快手评论点赞网站建设专业分站青岛专业做商业房的网站
  • 友情链接交换标准seo网站推广多少钱
  • 响应式企业展示型网站模板做招聘网站需要人力资源许可
  • 地方志网站建设方案wordpress默认后台登陆
  • 彩票网站开发教程百度网盘人工申诉电话
  • 下载了网站源码天空人体网站怎么做
  • 西安做企业网站排名中国石化工程建设公司网站
  • 做网站要用什么服务器佛山网站建设怎么办