前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全网最全、最新MyBatis框架核心知识,这篇文章包你这辈子也忘不掉MyBatis!!

全网最全、最新MyBatis框架核心知识,这篇文章包你这辈子也忘不掉MyBatis!!

原创
作者头像
Java学术趴
发布2022-05-01 19:23:19
3430
发布2022-05-01 19:23:19
举报
文章被收录于专栏:Java全栈·Java全栈·

👋大家好!我是你们的老朋友Java学术趴,今天继续给大家分享小趴经过一个星期整理出来的MaBatis框架核心知识。其中包含框架介绍、入门案例、常用接口、动态代理以及MyBatis的深入理解。MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。以下就为大家详细介绍MyBatis框架。如果大家喜欢的话,点赞支持支持小趴,这是对小趴最大的认可,文章有点长,希望大家认真阅读,一定会对你有帮助的,感谢阅读。

✨✨MyBatis框架

1. 软件开发常用结构

  • MyBatis是操作数据库的,相当于是一个增强的JDBC

1.1 三层架构

三层架构包括:

  • 界面层(User Interface layer)
  • 业务逻辑层(Business Logic Layer)
  • 数据访问层(Data access layer)

三层的职责:

  • 界面层(表示层,视图层):主要功能是接受用户的数据,显示请求的处理结果。使用 web 页面和 用户交互,手机 app 也就是表示层的,用户在 app 中操作,业务逻辑在服务器端处理。 可以认为是jsp、servlet、html、css...
  • 业务逻辑层:接收表示传递过来的数据,检查数据,计算业务逻辑,调用数据访问层获取数据。可以认为是service,处理业务逻辑,调用dao的。
  • 数据访问层(持久层):与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交 给业务层,同时将业务层处理的数据保存到数据库.

三层对应的包:

  • 面层: controller包 (servlet)
  • 业务逻辑层: service 包(XXXService类)
  • 数据访问层: dao包(XXXDao类)用来对数据库进行增、删、改、查。

三层的处理请求的交互:

  • 用户---> 界面层--->业务逻辑层--->数据访问层--->DB 数据库
image-20210803214420794
image-20210803214420794

为什么要使用三层:

  • 结构清晰、耦合度低, 各层分工明确
  • 可维护性高,可扩展性高
  • 有利于标准化
  • 开发人员可以只关注整个结构中的其中某一层的功能实现
  • 有利于各层逻辑的复用

重点 :因为每一层都对应一个处理框架

三层对应的处理框架:

  • 界面层---servlet---springmvc(框架):接收请求,处理结果。
  • 业务逻辑层---service类--spring(框架) :管理service类。
  • 数据访问层---dao类--mybatis(框架):代替JDBC访问数据库。

2. 什么是框架

框架的定义:

  • 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方 法;另一种认为,框架是可被应用开发者定制的应用骨架、模板。 简单的说,框架其实是半成品软件,就是一组组件,供你使用完成你自己的系统。从另一个角度来 说框架一个舞台,你在舞台上做表演。在框架基础上加入你要完成的功能。 *框架是安全的,可复用的,不断升级的软件。 *
  • 简单理解:可以把框架当做是一个舞台、一个模板(规定好的一些条款、内容)。

框架解决的问题:

  • 框架要解决的最重要的一个问题是技术整合,在 J2EE 的 框架中,有着各种各样的技术,不同的应 用,系统使用不同的技术解决问题。需要从 J2EE 中选择不同的技术,而技术自身的复杂性,有导致更 大的风险。企业在开发软件项目时,主要目的是解决业务问题。 即要求企业负责技术本身,又要求解 决业务问题。这是大多数企业不能完成的。框架把相关的技术融合在一起,企业开发可以集中在业务领 域方面。
  • 另一个方面可以提供开发的效率。

框架的特点:

  • 框架一般不是全能的, 不能做所有事情
  • 框架是针对某一个领域有效。 特长在某一个方面,比如mybatis做数据库操作强,但是他不能做其它的。
  • 框架是安全的,可复用的,不断升级的软件。

常用的J2EE开发框架:

  • J2EE是一套针对企业级分布式应用的计算环境。它定义了动态Web页面功能(Servlet和Jsp)、商业组件(EJB)、异步消息传输机制(JMS)、名称和目录定位服务(JNDI)、数据库访(JDBC)、与子系统的连接器(JCA)和安全服务等。

MyBatis 框架: MyBatis 是一个优秀的基于 java 的持久层框架,内部封装了 jdbc,开发者只需要关注 sql 语句 本身,而不需要处理加载驱动、创建连接、创建 statement、关闭连接,资源等繁杂的过程。 MyBatis 通过 xml 或注解两种方式将要执行的各种 sql 语句配置起来,并通过 java 对象和 sql 的 动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。


Spring 框架: Spring 框架为了解决软件开发的复杂性而创建的。Spring 使用的是基本的 JavaBean 来完成以前 非常复杂的企业级开发。Spring 解决了业务对象,功能模块之间的耦合,不仅在 javase,web 中使用, 大部分 Java 应用都可以从 Spring 中受益。 Spring 是一个轻量级控制反转(IoC)和面向切面(AOP)的容器。


SpringMVC 框架: Spring MVC 属于 SpringFrameWork 3.0 版本加入的一个模块,为 Spring 框架提供了构建 Web 应用程序的能力。现在可以 Spring 框架提供的 SpringMVC 模块实现 web 应用开发,在 web 项目中 可以无缝使用 Spring 和 Spring MVC 框架。

3.MyBatis框架

3.1 MyBatis介绍

  • 一个框架,早期叫做ibatis, 代码在github。
  • mybatis是(MyBatis SQL Mapper Framework for Java )(sql映射框架)
    • sql mapper : sql映射 可以把数据库表中的一行数据 映射为 一个java对象。一行数据可以看做是一个java对象。操作这个对象,就相当于操作表中的数据。
    • Data Access Objects(DAOs) : 数据访问 , 对数据库执行增删改查。

3.1 MyBatis 提供的功能

  • 提供了创建Connection ,Statement, ResultSet的能力 ,不用开发人员创建这些对象了。
  • 提供了执行sql语句的能力, 不用你执行sql。
  • 提供了循环sql, 把sql的结果转为java对象, List集合的能力。
代码语言:javascript
复制
// 这是以前使用JDBC时获取到的数据库查询结果,此时需要使用循环来获取到查询的结果,并将这个结果写入到一个List集合中,很麻烦。
// 此时使用MyBatis框架,他会把这些sql语句当做是一个个的对象,在底层对自动帮我们完成这个循环,我们获取到的是一个装满sql对象的List集合。
while (rs.next()) {
        Student stu = new Student();
        stu.setId(rs.getInt("id"));
        stu.setName(rs.getString("name"));
        stu.setAge(rs.getInt("age"));
        //从数据库取出数据转为 Student 对象,封装到 List 集合
        stuList.add(stu);
      }
复制代码
  • 提供了关闭资源的能力,不用你关闭Connection, Statement, ResultSet。

3.2 开发人员做的工作

  • 提供sql语句,剩下的怎么执行这个sql语句,怎么获取到这个List集合,MyBatis会帮我们自己写好。
  • 使用MyBatis之后的开发步骤
代码语言:javascript
复制
开发人员提供sql语句--->MyBatis处理sql--->开发人员得到List集合或者java对象(表中的数据)
复制代码

3.3 对MyBatis的总结概述

  • mybatis是一个sql映射框架,提供的数据库的操作能力。增强的JDBC, 使用mybatis让开发人员集中精神写sql就可以了,不必关心Connection,Statement,ResultSet 的创建,销毁,sql的执行。

4.入门案例

5.MyBatis对象分析

5.1 Resources 类

  • Resources 类,顾名思义就是资源,*用于读取资源文件。*其有很多方法通过加载并解析资源文件,返 回不同类型的 IO 流对象。
  • 简单的说这个类就是读取以上入门案例,中的Resources: mybatis中的一个类, 负责读取主配置文件。 InputStream in = Resources.getResourceAsStream("mybatis.xml"); 复制代码

5.2 SqlSessionFactoryBuilder 类

  • SqlSessionFactory 的 创 建 , 需 要 使 用 SqlSessionFactoryBuilder 对 象 的 build() 方 法 。 由 于 SqlSessionFactoryBuilder 对象在创建完工厂对象后,就完成了其历史使命,即可被销毁。所以,一般会将 该 SqlSessionFactoryBuilder 对象创建为一个方法内的局部对象,方法结束,对象销毁。
  • SqlSessionFactoryBuilder : *创建SqlSessionFactory对象。 * SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //创建SqlSessionFactory对象 SqlSessionFactory factory = builder.build(in); 复制代码

5.3 SqlSessionFactory 接口

  • SqlSessionFactory 接口对象是一个重量级对象(系统开销大的对象),是线程安全的,所以一个应用 只需要一个该对象即可。创建 SqlSession 需要使用 SqlSessionFactory 接口的openSession()方法。
  • SqlSessionFactory 这个接口的实现类是 DefaultSqlSessionFactory。这个实现类中有openSession()方法,使用这个接口就是为了使用这个openSession()方法来获取SqlSession对象
  • SqlSessionFactory 作用 : 获取SqlSession对象。 SqlSession sqlSession = factory.openSession(); 复制代码

openSession()方法的几种形式:

➢ openSession(true):创建一个有自动提交功能的 SqlSession 。

➢ openSession(false):创建一个非自动提交功能的 SqlSession,需手动提交 。

➢ openSession():无参数,获取的是非自动提交事务的SqlSession对象。

5.4 SqlSession 接口

  • SqlSession 接口对象用于执行持久化操作。一个 SqlSession 对应着一次数据库会话,一次会话以 SqlSession 对象的创建开始,以 SqlSession 对象的关闭结束。 SqlSession 接口对象是线程不安全的,所以每次数据库会话结束前,需要马上调用其 close()方法,将 其关闭。再次需要会话,再次创建。 SqlSession 在方法内部创建,使用完毕后关闭。
  • SqlSession 接口 :* 定义了操作数据的方法。* 例如 selectOne() ,selectList() ,insert(),update(), delete(), commit(), rollback()。
  • SqlSession接口的实现类DefaultSqlSession。

使用要求:

  • SqlSession对象*不是线程安全的,*需要在方法内部使用, 在执行sql语句之前,使用openSession()获取SqlSession对象。在执行完sql语句后,需要关闭它,执行SqlSession.close(). 这样能保证他的使用是线程安全的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ✨✨MyBatis框架
    • 1. 软件开发常用结构
      • 1.1 三层架构
    • 2. 什么是框架
      • 3.MyBatis框架
        • 3.1 MyBatis介绍
        • 3.1 MyBatis 提供的功能
        • 3.2 开发人员做的工作
      • 3.3 对MyBatis的总结概述
        • 4.入门案例
          • 5.MyBatis对象分析
            • 5.1 Resources 类
            • 5.2 SqlSessionFactoryBuilder 类
            • 5.3 SqlSessionFactory 接口
            • 5.4 SqlSession 接口
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档