萌新的Java入门日记17

刷题,是一个持之以恒的历程

数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。
MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。
ORM(Object Relational Mapping,对象关系映射)是一种数据持久化技术,它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过 JavaBean 对象去操作数据库表中的数据。
ORM通过将对象模型与关系数据库的表进行映射,大大简化了数据库操作,使代码更具可读性、易维护性。
一、#与$ 区别 :${}拼接字符串         #{} 预编译,有效防止SQL注入
使用建议:

尽量使用#{}:因为它会预编译,能够有效防止SQL注入,并且能够自动进行类型转换。
避免直接使用${}进行不可信数据:除非你非常确定传入的参数是安全的,不会引起SQL注入。通常,只在需要动态生成SQL语法元素(如表名、列名)时使用 ${}。

示例图
 

二、防止SQL注入:
预编译-将SQL语句的语义确定, 之后无论传递任何的参数都不会改变SQL语句语义, 可以有效防止SQL注入,也可以有效加快批处理的效率

三、

三种接收数据方式:
在使用MyBatis进行数据库操作时,接收和传递数据的方法需要谨慎选择,以确保安全性和可维护性。接收数据的方式主要有三种:通过Mapper直接接收,通过简单的字符串传递,以及通过封装类传递。

1.Mapper直接接收参数(不推荐)


Mapper直接接收参数虽然简单,但是存在潜在的安全隐患,特别是当传递参数直接拼接到SQL语句中的时候,会导致SQL注入

缺点:

容易引起SQL注入。
代码维护性差,特别是当参数增多时


2. 通过简单字符串传递参数(不推荐)
将参数拼接成字符串传递,虽然能够避免一些简单场景下的拼接问题,但如果参数量较多或者包含特殊字符,就不太适用了

缺点:

当参数较多时,字符串拼接会变得不堪重负。
维护和阅读性差。


3. 封装类接收参数(推荐)--有效防止SQL注入
通过使用封装类(POJO,Plain Old Java Object),可以将多个参数封装到一个对象中传递。这种方法不仅能提高代码的可读性和可维护性,还能有效防止SQL注入。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Black__Emperor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值