首页 > 其他分享 >MyBatis理论

MyBatis理论

时间:2022-10-09 22:46:22浏览次数:47  
标签:映射 对象 理论 ORM sql MyBatis 数据库

MyBatis简介

MyBatis是什么?

MyBatis是一款优秀的持久层框架,一个ORM(对象关系映射)框架,它支持定制化SQL、存储过程以及高级映射。MyBaits避免了几乎所有JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的xml或注解来配置和映射原生类型、接口和java的POJO(Plain Old Java Objects,普通老式java对象)为数据库中的记录。

ORM是什么?

ORM(Object Relational Mapping),对象关系映射,是一种为了解决关系型数据库数据与简单Java对象(POJO)的映射关系的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久话到关系型数据库中。

为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在那里?

Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。
而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以称之为半自动ORM映射工具

传统JDBC开发存在的问题

  • 频繁创建数据库连接对象、释放,容易造成系统资源浪费,影响系统性能。可以使用连接池来解决这个问题,但是使用jdbc需要自己实现连接池。

  • sql语句定义、参数设置、结果集处理存在硬编码。实际项目中sql语句变化的可能性较大,一旦发生变化,需要修改java代码,系统需要重新编译,重新发布。不好维护。

  • 使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。

  • 结果集处理存在重复代码,处理麻烦。如果可以映射成java对象会比较方便。

JDBC变成有哪些不足之处,MyBatis是如何解决这些问题的?

  • 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可以解决此问题。

  • Sql语句写在代码中不易维护,实际应用sql变化的可能较大,sql变动需要该编java代码
    解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。

  • 向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
    解决:MYbatis自动将java对象映射至sql语句。

  • 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
    解决Mybatis自动将sql执行结果映射至java对象

Mybatis优缺点

优点
与传统的数据库访问技术相比,ORM有以下优点:

  • 基与sql语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序的耦合,便于统一管理;提供xml标签,支持编写动态SQL语句,并可重用。
  • 与JDBC相比,减少了50%以上的代码量,消除了JDBC大量其他的代码,不需要手动开关连接。
  • 很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)
  • 提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
  • 能与sping很好的集成

MyBatis框架适用场景

  • MyBatis专注SQL本身,是一个足够灵活的DAO层解决方法
  • 对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错
    的选择

标签:映射,对象,理论,ORM,sql,MyBatis,数据库
From: https://www.cnblogs.com/doubleconquer/p/16773905.html

相关文章

  • springboot整合mybatisPlus
    引入场景启动器              ......
  • MyBatis-学习笔记-day02
    parameterType(输入类型) 传递简单的类型 传递pojo对象  Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称。 传递包装类  包装类的......
  • Spring Boot整合 MyBatis 多数据源
    工程创建首先需要创建MyBatis项目,项目创建和前文的一样,添加MyBatis、MySQL以及Web依赖:pom文件<dependency><groupId>org.springframework.boot</groupId><ar......
  • Mybatis——plus
    我觉得没有比官方文档更加权威了(这是我见过的最好的文档)官方文档:​​https://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A7​​  ......
  • Mybatis——plus 条件构造器(EntityWrapper)
    持久层框架解决的就是数据访问的问题。Mybatis Plus 是mybatis的搭档,更方便的去进行持久层的操作。 在数据访问中,有一个比较大的问题是条件查询。我们在开发过程中肯定少......
  • Mybatis——plus 代码生成器
    MybatisPlus 给我们提供了更加强大的代码生成器  ## 代码生成器的简单的对比  MybatisPlus 给我们提供的代码生成器,不仅仅可以生成dao层,还可以生成 Service层,Cont......
  • Mybatis——Plus 从零开始使用
    也就是想用学习环境的搭建,应该怎么做。这个可以参考官方文档:​​https://mp.baomidou.com/guide/quickstart.html#%E5%88%9D%E5%A7%8B%E5%8C%96%E5%B7%A5%E7%A8%8B​​ ......
  • springboot——数据访问——整合mybatis
    springboot没有直接提供和mybatis对接的stater,但是mybatis自己提供了整合的。想要在springboot中使用mybatis还是方便的。步骤:可以在创建项目的时候就直接勾选住依赖,也可以......
  • mybatis-plus自动填充
    在实际开发中创建时间与修改时间是必不可少的,新增时间的时候我们常常使用set方法把时间添加进去,当然这种方法也是可以的,一次两次还是,要是n次的话就有些影响性能了。程序员......
  • spring boot项目使用mybatis-plus代码生成实例
    前言mybatis-plus官方地址https://baomidou.commybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实现CRUD,自动分页,逻辑删除等功能......