Mybatis(Day 18)

打印 上一主题 下一主题

主题 568|帖子 568|积分 1706


  • 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。
  • 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注入。
  [code][/code]
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表