初识MyBatis --对MyBatis 的基本认识

Mybatis是一个基于Java的 持久层 框架:

什么是持久层呢?

  • 去过网吧的小伙伴很清楚,当你关机后无论你曾经下载过什么东西,都会销声匿迹。
    那么我们如何将我们的数据保存下来呢?
    存在到文件中或者数据库中,就可以实现这个效果,这就是持久化:即将数据到持久的保留下来。
    持久化:数据从瞬时状态变为持久状态。
    持久层:完成持久化工作的代码块。 – Dao
    ​Mybatis就是帮助开发者 将数据存入到数据库中,和从数据库中取数据。

MyBatis是一个半自动化的 ORM 框架:

半自动化是什么?

  • 说半自动化时我们先来说说什么是自动化?

    ​ 假设小明(伴随一生的小明,hh)的班级里面有一个山大王,每次都让小明给他写作业(包括山大王的
    名字),即小明完成了山大王的所有任务,山大王只管去泡美眉(嘻嘻)。这个就是简单的自动化,即一个框 架只需要一个命令就完成了所有的任务。

引出半自动化:

  • ​ 有一天山大王换了一个新本子,小明不小心在本子的皮上写上了自己的名字,结果被老师发现,痛骂了山大王,之后山大王开始乖乖的写自己的名字,但是里面的作业还是小明帮忙写的,不时的会自己补充点内容(魔高一尺,道高一丈哟)。**对应到
    MyBatis 中,就是 SQL 语句(当然不止)还是我们需要自己写的,即半自动化。

  • 相信到这里你会有些许的疑问,既然都有自动化这么方便的东西了为什么还要搞半自动化呢?大家不是都说要提高效率吗,显然自动化不是效率更高吗?别慌,让我们带着这些疑问继续往下走(下面会有详细的说明)。

​ ORM 什么?

  • ​ ORM 是 Object、Relationship、Mapping 的缩写,即对象关系映射

    ​ 在这其中有几种关系映射(现在不懂没关系,在代码中会有更多的感悟):

1.一张表对应一个类(实体类)  STUDENT表对应Student  TEACHER表对应Teacher类
     stu_student StuStudent 
     cn.bean.Student     student   n_student


2.一行记录对应一个对象,比如  student表有50条记录,创建50个Student对象
3.一个列(字段)对应一个属性,列的类型和属性的类型一致  列的名字和属性的名字一致  入乡随俗
4.teacher和student表中外键,映射为对象类型或者集合。

为什么更多的选择 半自动化(Mybatis) 而不是 自动化 (Hibernate )?

  • Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句,不过 mybatis 可以通过 XML 或注解方式灵活配置要运行的 sql 语句,并将java 对象和 sql
    语句映射生成最终执行的 sql,最后将 sql 执行的结果再映射生成 java 对象。
  • Mybatis 学习门槛低,简单易学,程序员直接编写原生态 sql,可严格控制 sql,执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是
    mybatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套 sql 映射文件,工作量大。
  • Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用 hibernate 开发可以节省很多代码,提高效率。但是Hibernate 的缺点是学习门槛高,要精通门槛更高,而且怎么设计
    O/R映射,在性能和对象模型之间如何权衡,以及怎样用好 Hibernate 需要具有很强的经验和能力才行。
    总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。

原文链接:https://blog.csdn.net/weixin_45930636/article/details/104432718

与传统的JDBC相对比有哪些优点?

​		相信大家在刚开始都是使用的 JDBC 进行与数据库之间的操作,在使用 JDBC 时,
	会有重复的代码块。
		比如数据取出时的封装,数据库的建立连接等等。

框架能带给我们哪些好处呢?

		1、减少重复代码。

​	    2、提升开发效率。

原创文章 6 获赞 6 访问量 311

猜你喜欢

转载自blog.csdn.net/qq_43619271/article/details/106147170