程序员面经集

彻底吃透Mybatis 基本应用

2021-02-22  本文已影响0人  JAVA架构师的圈子

1. 框架简介

1.1 三层架构
软件开发常用的架构是三层架构,之所以流行是因为有着清晰的任务划分。一般包括以下三层:

因为数据库访问的对象一般称为Data Access Object(简称DAO),所以有人把持久层叫做DAO 层。
//加入Java开发交流君样:756584822一起吹水聊天

因为它主要是为上层提供服务的,所以有人把业务层叫做Service层或Business层。

因此,有人把表现层称之为web层或View层。

三层架构之间调用关系为:表现层调用业务层,业务层调用持久层。 各层之间必然要进行数据交互,我们一般使用java实体对象来传递数据。

在这里插入图片描述

1.2 框架

1.2.1 什么是框架?

框架就是一套规范,既然是规范,你使用这个框架就要遵守这个框架所规定的约束。 框架可以理解为半成品软件,框架做好以后,接下来在它基础上进行开发。

1.2.2 为什么使用框架?

框架为我们封装好了一些冗余,且重用率低的代码。并且使用反射与动态代理机制,将代码实现了通用性,让 开发人员把精力专注在核心的业务代码实现上。

比如在使用servlet进行开发时,需要在servlet获取表单的参数,每次都要获取很麻烦,而框架底层 就使用反射机制和拦截器机制帮助我们获取表单的值,使用jdbc每次做专一些简单的crud的时候都必须 写sql,但使用框架就不需要这么麻烦了,直接调用方法就可以。当然,既然是使用框架,那么还是要遵循其一些规范进行配置。//加入Java开发交流君样:756584822一起吹水聊天

1.2.3 常见的框架

Java世界中的框架非常的多,每一个框架都是为了解决某一部分或某些问题而存在的。下面列出在目前企业中流行的几种框架:

a. 持久层框架:专注于解决数据持久化的框架。常用的有mybatis、hibernate、spring jdbc等等。

b. 表现层框架:专注于解决与用户交互的框架。常见的有struts2、spring mvc等等。

c. 全栈框架: 能在各层都给出解决方案的框架。比较著名的就是spring。

我们以企业中最常用的组合为准来学习Spring + Spring MVC + mybatis(SSM)

2. Mybatis简介

2.1. 原始jdbc开发存在的问题如下

a. 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能

b. sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java 代码

c. 查询操作时,需要手动将结果集中的数据手动封装到实体中
//加入Java开发交流君样:756584822一起吹水聊天
2.2.应对上述问题给出的解决方案
  a. 使用数据库连接池初始化连接资源

b. 将sql语句抽取到xml配置文件中

c. 使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射

2.3 Mybatis简介

MyBatis是一个优秀的基于ORM的半自动轻量级持久层框架,它对jdbc的操作数据库的过程进行封装, 使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建 statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

mybatis 历史

MyBatis 本是apache的一个开源项目iBatis, 2010年6月这个项目由apache software foundation 迁移 到了google code,随着开发团队转投到Google Code旗下,iBatis正式改名为MyBatis ,代码于2013 年11月迁移到Github

Github地址: https://github.com/mybatis/mybatis-3/

2.4 ORM思想

ORM(Object Relational Mapping)对象关系映射 O(对象模型):

实体对象,即我们在程序中根据数据库表结构建立的一个个实体javaBean R(关系型数据库的数据结构):

关系数据库领域的Relational(建立的数据库表) M(映射):

从R(数据库)到O(对象模型)的映射,可通过XML文件映射实现:

a. 让实体类和数据库表进行一一对应关系 先让实体类和数据库表对应 再让实体类属性和表里面字段对应

b. 不需要直接操作数据库表,直接操作表对应的实体类对象

ORM作为是一种思想 帮助我们跟踪实体的变化,并将实体的变化翻译成sql脚本,执行到数据库中去,也就是将实体的变化映射到了表的变化。mybatis采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。


image

最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:756584822

上一篇下一篇

猜你喜欢

热点阅读